2013-01-19 18 views
1

我正在用Python/Flask/Jinja2構建一個網站,其中涉及用戶創建的列表。每個列表都有一個到期日期,因此每個列表都是活動的或過期的。如何在顯示相同對象的兩個版本時構建Jinja2模板?

每個上市將有其自己的頁面在mysite.com/listings/<listing_id>。過期的列表頁面看起來與活動的列表頁面不同。差異可能很多,但頁面的高級結構將是相同的(畢竟,兩者都在同一網站上列出)。

構建模板和邏輯的最佳方式是什麼?我看到兩個選項:

首先,我可以創建兩個Jinja2模板:listing.htmllisting_expired.html。視圖函數將確定列表是否處於活動狀態或過期狀態,然後渲染適當的模板。缺點是兩個模板必須保持同步。

或者,我可以只有一個模板:listing.html。然後模板將包含邏輯來測試列表是否過期。模板的一部分將在過期時使用,如果不是,則使用另一部分(使用大語句if-else)。

什麼是正確的方式來構造這個?

回答

0

我認爲最好的方法是有兩個不同的模板,並通過它們兩個繼承高級結構。

1

您可以使用jinja模板繼承爲此。使用泛化,您可以創建一個基本模板,並使用兩個子模板(列表和過期)和子塊擴展此模板以創建視圖。結論:三個模板沒有一個大的if-else。

相關問題