2

私はフラスコと SqlAlchemy を使用してブログ エンジンを構築してきましたが、次のようになるまでに到達しました。

  • 左右のサイドバーと、クエリに基づいて動的に生成されるフッター領域を持つ汎用ベース テンプレート。
  • 上記のサイドバーとフッターを設定するためにすべてのビューに渡される変数の数。

私の質問は:

呼び出しで変数を渡すことなく、フラスコアプリのすべてのビューに変数のグループを渡すことができる手段はありrender_template()ますか?

4

2 に答える 2

2

サイドバーやその他の繰り返し要素をインポートする従来の方法は、ページ テンプレートによって継承されるレイアウト テンプレートにインポートすることです。例:

レイアウト.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 %} 
于 2013-07-24T03:59:14.097 に答える