2010-02-13 63 views
3

我的主導航由新聞類別組成,屬於類別模型。我在templates/base.html中對導航進行了硬編碼,但希望使其具有動態...django動態導航的最佳做法?

在我的模板中嵌入模型代碼是不是一個好主意?如果是這樣,我應該如何拉他們?我應該讓導航文件分開嗎?我不僅要依靠這些類別,而且還需要一個「主頁」鏈接以及其他一些鏈接。

如果可能的話,如果我可以製作一個新的導航模型,但是我不確定如何能夠從類別表中包含新聞類別,因此它們也可以是導航中的項目。

回答

6

爲什麼不在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 %}