在django中,我應該通常選擇哪個,爲什麼?Django:我應該有複雜的模板變量名稱還是複雜的視圖
長模板變量名,通過儘可能少的「根對象」(如要求)儘可能:
{% if request.current_page.get_children.0.get_absolute_url %}
或傳遞一個地獄很多不同的「根對象」,並保持模板變量名稱簡單:
{% if first_child_url %}
在MI某處ddle,例如,經過
children
{% if children.0.get_absolute_url %}
或通過
first_child
{% if first_child.get_absolute_url %}
第一種方法的優點是鬆耦合的,因爲我不需要每次我需要時間來改變視圖使用另一個變量;第二種方法的優點是模板更簡單,更清潔。
如果我使用不允許添加額外上下文變量的通用視圖(或第三方視圖)(因此添加上下文變量的唯一方法是編寫中間件或上下文處理器),這會改變什麼嗎?
您可以在通用視圖中添加額外的上下文(至少在Django 1.3中)。看看[這裏](https://docs.djangoproject.com/en/1.3/ref/generic-views/)找到變量extra_context,你可以在其中添加任何東西。 – Hassek
@Hassek:我正在使用[django-cms](https://www.django-cms.org/),他的觀點不允許我傳遞extra_context,我可能會錯過某些內容,但我沒有看到任何內容通過其他方式將額外的上下文變量傳遞給除中間件和上下文處理器之外的django-cms頁面。 –
哦,這改變了規則。根本沒有使用django-cms:p – Hassek