18

初心者の質問です。

Python の Web フレームである Flask を使用しています。Flask は、Jinja を使用してテンプレートをレンダリングします。Jinja Flask のどのバージョンが使用されているかわかりません。また、Jinja バージョンまたは Flask バージョンを取得する方法もわかりません。Python バージョン 2.7 を使用しています。

テンプレートには、css/image ディレクトリに画像が含まれています。この画像は、テンプレートをファイルとして Firefox ブラウザーで直接表示すると表示されます。

しかし、 Flask を実行するときではありません:

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('Basic.html', name=name)

if __name__ == '__main__':
   app.debug = True
   app.run()

HTML ファイルの内容:

 <!DOCTYPE HTML>
 <html>
    <body> 

      <!-- variable example begin -->
      {% if name %}
        <h1>Hello {{ name }}!</h1>
      {% else %}
        <h1>Hello World!</h1>
      {% endif %}

      <!-- variable example end -->

     <img src="css/images/icons/resultset_previous.png" width="16" height="16" alt="previous" title="Previous" border="0">

   </body>
 </html>

テンプレートは正常に実行され、変数の例は期待どおりに実行されます。しかし、画像は表示されません。デバッグの戻り値: "GET /hello/css/images/icons/resultset_previous.png HTTP/1.1" 404 -

ドキュメントで提案されているように、VirtualEnvでFlaskを実行します。画像へのパスは不明のようです。どうすればパスを設定できますか?

4

2 に答える 2

26

Flask の場合、通常は静的ファイルを "static" フォルダーの下に保持してから、url_for 関数を使用する必要があります。プロジェクトが「myproject」と呼ばれ、例を使用すると、次のようになります。

myproject/
    app.py
    templates/
    static/
        css/
            images/
                icons/
                    resultset_previous.png

次に、テンプレートで呼び出すことができます

<img src= {{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }} width="16" height="16" alt="previous" title="Previous" border="0">

また、ジンジャのバージョンなどについての質問に答えるには、これをチェックしてください

https://github.com/mitsuhiko/flask/blob/master/.travis-lowest-requirements.txt

于 2013-06-20T17:44:12.230 に答える
13

Flask ドキュメントのこのセクションを参照してください。

テンプレートから静的ファイルを参照する正しい方法は次のとおりです。

<img src="{{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }}" width="16" height="16" alt="previous" title="Previous" border="0">
于 2013-06-20T16:55:01.300 に答える