2010-02-13 138 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 %}