初心者の質問。
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を実行します。イメージへのパスが不明なようです。パスを設定するにはどうすればよいですか?
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">
また、jinjaバージョンなどについての質問に答えるには、これをチェックしてください
https://github.com/mitsuhiko/flask/blob/master/.travis-lowest-requirements.txt
Flaskドキュメントの このセクション を参照してください。
テンプレートから静的ファイルを参照する正しい方法は次のとおりです。
<img src="{{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }}" width="16" height="16" alt="previous" title="Previous" border="0">