2011-09-25 61 views
14

我在我的網站上是using Jinja,我喜歡它。Jinja模板中是否允許內聯代碼?

我遇到過一個簡單的需求。如何顯示今天的日期? 有沒有辦法在Jinja模板中嵌入一些Python代碼?

import datetime 
now = datetime.datetime.utcnow() 
print now.strftime("%Y-%m-%d %H:%M") 

This article says no,但建議使用宏或過濾器?

真的嗎?我們必須訴諸所有?好的,在這種情況下會是什麼樣子?

回答

11

不,沒有辦法將Python內聯到Jinja中。但是,您可以通過擴展模板引擎的Environment或可用於所有模板的global namespace來添加Jinja知道的構造。或者,您可以添加一個篩選器,讓您格式化日期時間對象。

Flask在app.jinja_env上存儲Jinja2環境。您可以通過直接添加到該字典或使用裝飾器來向環境注入新的上下文。

無論您選擇什麼路徑,都應在設置應用程序時完成,然後再提供任何請求。 (關於如何設置過濾器的一些goodexamples,請參閱網站的片段部分 - the docs包含一個向全局變量添加的好例子)。

3

您可以添加到global variables哪些可以從Jinja模板訪問。你可以把你自己的函數定義放在那裏,它可以做你需要的任何東西。