私はフラスコと SqlAlchemy を使用してブログ エンジンを構築してきましたが、次のようになるまでに到達しました。
- 左右のサイドバーと、クエリに基づいて動的に生成されるフッター領域を持つ汎用ベース テンプレート。
- 上記のサイドバーとフッターを設定するためにすべてのビューに渡される変数の数。
私の質問は:
呼び出しで変数を渡すことなく、フラスコアプリのすべてのビューに変数のグループを渡すことができる手段はあり
render_template()
ますか?
サイドバーやその他の繰り返し要素をインポートする従来の方法は、ページ テンプレートによって継承されるレイアウト テンプレートにインポートすることです。例:
レイアウト.html:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
{% include sidebar.html %}
{% block body %}
{% endblock body %}
</body>
</html>
post.html:
{% extends "layout.html" %}
{% block body %}
{{ post }}
{% endblock %}
次のようなグローバル関数を作成することもできます。
def createNav():
nav = '''
<ul class="nav">
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
'''
return nav
#make function available inside jinja template
app.jinja_env.globals.update(createNav=createNav)
次に、次のように呼び出します。
post.html:
{% extends "layout.html" %}
{% block body %}
{{ createNav() }}
{{ post }}
{% endblock %}