2011-01-12 8 views
19

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

  • ページ固有の変数はどこに保存しますか?
  • どのページが要求され、どの変数を読み込むのかをコードはどのように知っていますか?
+1

フラスコが良い選択です。チュートリアルでは、あなたの質問に多かれ少なかれ答える:http://flask.pocoo.org/docs/quickstart/#rendering-templates '@ app.route'がどのようにURLを定義しているかにも注意してください。 – 9000

+0

おかげで - 私は、ページごとにPythonスクリプトを持っている各Pythonスクリプト内の変数を宣言した後、template.renderするためにそれらを渡すのでしょうか? –

答えて

48

ここで基本的な使い方です:

まず、それは通常、あなたが代わりのファイルからテンプレートをロードしたいと思うでしょう変数

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

を渡してレンダリング次にテンプレート

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

を作成コード。それは、より効率的かつ最適化されただし、テンプレートの継承ができます:Pythonのパスにインストールされ、yourapplication Pythonパッケージのtemplatesフォルダ内のテンプレートを探します

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

を。他のローダーを使って、特定のファイルシステムや他の場所からロードすることもできます。

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

それはすべてあなたのために構成されたフラスコを使用して、そうあなただけのフラスコのrender_template機能を使用することができますし、それはすでにあなたのアプリケーションのtemplatesサブフォルダを探します:

次にそのテンプレートを読み込むことができます

from flask import render_template 

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

(またコンテキストとしても知られる)テンプレート変数はrender_template

に渡される注

ジンジャーはかなりgood documentationです。それをお読みください。お気軽にご質問ください。

1

編集:私は答えの検索でinterwebをGoogleで検索しましたし、私は(彼らは私を助けてきたかなり確信して)助けることができるいくつかの記事を見つけた

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/

+0

詳細な説明がないリンクの選択は役に立ちません。 – jwbensley

+0

@jwbensleyコピー貼り付けが無効になっていますので、役に立たないですか?ここに説明があります:読んで...しかし、私が怠け者であったか、急いでいたので、あなたの投票は合法です。 – StefanNch

+0

リンクの負荷を貼り付けるだけで、リンクの腐敗が発生します。 – jwbensley

関連する問題