我的主导航由新闻类别组成,属于类别模型。我在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