Django中动态导航的最佳实践是什么?

4
我的主要导航由新闻类别组成,它们属于Category模型。我在templates/base.html中硬编码了导航,但希望使其动态化...
将模型代码嵌入模板是一个不好的主意吗?如果是这样,我应该如何提取它们?我应该将导航文件分开吗?除了仅依赖类别之外,我还需要一个“主页”链接和其他一些链接。
如果可能的话,创建一个新的Navigation模型会很棒,但我不确定如何能够包含来自类别表的新闻类别,以便它们也可以成为导航中的项目。
2个回答

6

为什么不创建一个包含标签,在其中汇集所有相关类别的数据/链接,将它们制成列表,然后将其传递给包含标签的迷你模板,在任何页面上呈现?

例如,像这样(请注意,我不知道您当前的页面/内容是什么样子)

@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 %}

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接