19

同じページ レイアウトと構造を持つ 5 つのページがありますが、色やテキストなどが異なるため、テンプレートを作成するのに理想的な環境です。私は Jinja2 とおそらくフラスコを使用することにしました。ドキュメントといくつかのチュートリアルをオンラインで読みましたが、ページ上のテンプレートで何ができるかについて多くのことを説明していますが、変数をページに送信する方法についてはあまり説明していません。

  • ページ固有の変数はどこに保存しますか?
  • コードはどのページがリクエストされ、どの変数をロードするかをどのように知るのでしょうか?
4

2 に答える 2

48

基本的な使い方は次のとおりです。

最初にテンプレートを作成します

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')

次に、変数を渡してレンダリングします

>>> template.render(name='John Doe')
u'Hello John Doe!'

通常、コードではなくファイルからテンプレートをロードする必要があります。これはより効率的で最適化されており、テンプレートの継承が可能です:

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))

これにより、Python パスにインストールされている Python パッケージのtemplatesフォルダー内のテンプレートが検索されます。yourapplication他のローダーを使用して、特定のファイルシステムまたは他の場所からロードすることもできます。

次に、テンプレートをロードできます。

template = env.get_template('mytemplate.html')
print template.render(the='variables', go='here')

Flask を使用する場合はすべて構成されているため、Flask の関数を使用するだけで、アプリケーションのサブフォルダーrender_templateが既に検索されます。templates

from flask import render_template

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

に渡されるテンプレート変数 ( contextとも呼ばれる) に注意してください。render_template

Jinja にはかなり優れたドキュメントがあります。読んでください。さらに質問をお気軽に。

于 2011-01-12T01:21:36.733 に答える
1

編集:答えを求めてインターウェブをグーグルで検索し、役立つ記事をいくつか見つけました(確かにそれらが私を助けてくれました)

http://dbanck.de/2009/01/13/using-jinja2-with-django/

http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ (死亡)

http://djangosnippets.org/snippets/1061/

于 2012-02-21T09:23:56.107 に答える