22

ローカル マシンでローカル消費するためのデータを処理および表示する目的で、小さな Flask アプリを作成しました。私の Flask アプリはサブフォルダー内のデータを処理し、Web ページを開いて処理されたデータを表示します。画像が提供されていないことを除いて、すべてが見栄えがします。たとえば、結果の HTMl ソースは次のようになります。

<img src="/Users/username/Desktop/datafolder/pics/pic1.png" alt="pic1"> 

ただし、画像はありません。パスは正しいので、画像がFlaskに渡されるか渡されないかがrender_template. おそらく、このdjango の投稿にあるように、メディア ディレクトリを指定する方法はありますか?

画像を含める方法についての提案は大歓迎です。

よろしく、ザックcp

編集:回答とコメントで述べたように、すべての静的ファイルは指定された静的ディレクトリにある必要があります。「file://」構文を使用すると、ブラウザーにエラー メッセージが表示されました。 "Not allowed to load local resource: file:///Users/username/Desktop/datafolder/pics/pic1.png" これが原因で、画像を表示できませんでした。以下のソリューションのいずれかを使用して、指定された静的フォルダーに提供したい画像を作成できます。

4

3 に答える 3

24

Flask アプリケーションは、アプリケーションのルート ディレクトリ内の "静的" パスとして、静的ファイルを提供しようとするファイルを既定で設定します。したがって、プログラムを実行すると...

C:\Users\username\Desktop\MyApp

静的フォルダーは

C:\Users\username\Desktop\MyApp\Static

したがって、サービスを提供しようとすると、

/Users/username/Desktop/datafolder/pics/pic1.png

Flask が提供しようとするファイルは、実際には...

C:\Users\username\Desktop\MyApp\Static\Users\username\Desktop\datafolder\pics\pic1.png

これはおそらく正しくありません。

したがって、いくつかのことができます。

  1. 処理中のファイルを Flask アプリの実行元の「静的」フォルダーに変更し、HTML src 値をそのディレクトリに相対的にします。

  2. Flask コンストラクターstatic_folderでパラメーターを設定します。これにより、静的ファイルが提供される場所を具体的に設定できます。

    app = Flask(static_folder='C:\\Some\\Directory')
    
  3. いくつかのコメントが示唆しているように、file:// タイプの使用に変更してください。うまくいかない場合は、うまくいくはずなので、試していることを投稿してください:)

于 2012-07-22T07:06:05.613 に答える
21

さて、これを見てください: http://flask.pocoo.org/docs/quickstart/#static-files あなたがする必要があること:

cd path/to/your/flask/app
mkdir static
mv /Users/username/Desktop/datafolder/pics/pic1.png /static

<img src="/static/pic1.png" alt="pic1">テンプレートで使用します。

于 2012-07-22T09:16:18.943 に答える