2011-11-16 101 views
2

我正在使用CherryPy和Jinja作爲模板系統在python中編寫應用程序。可能需要說我是這些工具的初學者。 我現在面臨的問題是我無法確定在哪裏初始化Jinja的Environment類。CherryPy + Jinja,在哪裏初始化環境

目前我有

  • application.py(入口點,建立環境並啓動服務器)
  • root.py(根頁面類CherryPy的,必須從 'application.py' 進口,並且必須導入'application.py'來檢索實例化的環境)
  • pages.py(cherry.py的其他頁面類必須導入'application.py',並且必須從根目錄導入以構建樹)

試圖運行,看起來似乎是循環引用並失敗(應用程序> root>頁面>應用程序)。

我應該堅持只有一個環境實例,還是可以在root.py和pages.py中有一個實例?

這是正確的模式?

回答

0

你不應該真的repeat yourself。如果我是你,我會創建一個新的python模塊templates.py,並把所有的jinja環境配置/創建放在那裏。之後,只需在需要的地方導入該環境(例如from templates import jinjaenv)。在這種情況下,您可以將事情保持簡單和可擴展性,以備將來使用。

+0

好,但模板模塊可以被多個模塊引用。 python是否知道'jinjaenv'應該是'相同的'實例對象,還是隻是在每次導入時實例化一個新對象? –

+0

這將是同一個實例。模塊中定義的所有變量(類,函數)都是共享的。您可以將python模塊視爲一次加載並隨後在import語句的幫助下引用的對象。 –

+0

接受答案,然後;) –