我的主導航由新聞類別組成,屬於類別模型。我在templates/base.html
中對導航進行了硬編碼,但希望使其具有動態...django動態導航的最佳做法?
在我的模板中嵌入模型代碼是不是一個好主意?如果是這樣,我應該如何拉他們?我應該讓導航文件分開嗎?我不僅要依靠這些類別,而且還需要一個「主頁」鏈接以及其他一些鏈接。
如果可能的話,如果我可以製作一個新的導航模型,但是我不確定如何能夠從類別表中包含新聞類別,因此它們也可以是導航中的項目。
我的主導航由新聞類別組成,屬於類別模型。我在templates/base.html
中對導航進行了硬編碼,但希望使其具有動態...django動態導航的最佳做法?
在我的模板中嵌入模型代碼是不是一個好主意?如果是這樣,我應該如何拉他們?我應該讓導航文件分開嗎?我不僅要依靠這些類別,而且還需要一個「主頁」鏈接以及其他一些鏈接。
如果可能的話,如果我可以製作一個新的導航模型,但是我不確定如何能夠從類別表中包含新聞類別,因此它們也可以是導航中的項目。
爲什麼不在inclusion tag中創建您將所有相關類別的數據/鏈接放在一起,將它們放入列表中,然後將它傳遞給包含標籤的迷你模板,以便在您希望的任何頁面中呈現?
例如,像這樣(銘記我不知道你的當前頁/內容的樣子)
@register.inclusion_tag('/path/to/templates/my_nav_inclusion_tag.html')
def my_nav_inclusion_tag()
#create your base link and add it to the list of links
links = [['Home', '/']]
for all the categories you want to add:
# (It's up to you to decide how to wrangle your categories into shape)
links.append([category_name, category_url])
return {'links':links}
在包含標籤模板(my_nav_inclusion_tag.html),你可以試試:
{% for link in links %}
<a href="{{link.1}}">{{link.0}}</a>
{% endfor %}
而且在任何你需要的模板,以顯示在導航,只需調用包含標籤,如:
{% my_nav_inclusion_tag %}
要回答你的問題,是的,將模型代碼嵌入模板是不好的。讓您的預處理導航信息可用於每個模板(包括base.html
)的django方法都是通過RequestContext。
http://docs.djangoproject.com/en/1.1/ref/templates/api/#id1
http://docs.djangoproject.com/en/1.1/ref/settings/#setting-TEMPLATE_CONTEXT_PROCESSORS