我有五頁具有相同的頁面佈局和結構,但有一些不同的顏色,文本等,所以這是一個理想的模板環境。我決定使用Jinja2,可能還有燒瓶。我已經閱讀了文檔和一些在線教程,這些教程解釋了很多關於如何使用頁面上的模板進行操作的知識,但沒有涉及如何將變量發送到頁面。你在哪裏將變量存儲在jinja中?
- 你在哪裏存儲頁面特定變量?
- 代碼如何知道哪個頁面已被請求以及要加載哪些變量?
我有五頁具有相同的頁面佈局和結構,但有一些不同的顏色,文本等,所以這是一個理想的模板環境。我決定使用Jinja2,可能還有燒瓶。我已經閱讀了文檔和一些在線教程,這些教程解釋了很多關於如何使用頁面上的模板進行操作的知識,但沒有涉及如何將變量發送到頁面。你在哪裏將變量存儲在jinja中?
這裏的基本用法:
首先創建一個模板
>>> 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'))
這將尋找yourapplication
Python包的templates
文件夾內的模板,安裝在Python路徑。您可以使用其他加載程序從特定文件系統或其他位置加載。
然後你就可以加載模板:
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
Jinja有漂亮的good documentation。請閱讀。隨意提出進一步的問題。
編輯:我GOOGLE了interweb中尋找答案,我發現一些文章,可以幫助(很肯定他們已經幫我)
http://dbanck.de/2009/01/13/using-jinja2-with-django/
http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/
(死)
燒瓶是一個不錯的選擇。它的教程或多或少地回答你的問題:http://flask.pocoo.org/docs/quickstart/#rendering-templates。另請注意`@ app.route`如何定義URL。 – 9000 2011-01-12 01:29:40
謝謝 - 所以我會爲每個頁面有一個python腳本,在每個python腳本中聲明變量,然後將它們傳遞給template.render? – 2011-01-12 01:40:53