django中动态导航的最佳实践?

med*_*iev 4 django

我的主要导航由新闻类别组成,属于类别模型.我硬编码导航templates/base.html但想要让它变得动态......

在我的模板中嵌入模型代码是一个坏主意吗?如果是这样我该如何拉它们?我应该将导航文件分开吗?我不仅仅依赖于类别,而且还需要一个"主页"链接,以及其他一些链接.

如果可能的话,如果我可以创建一个新的导航模型,那将是很好的,但我不知道如何能够从类别表中包含新闻类别,因此它们也可以是导航中的项目.

Ste*_*lim 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}
Run Code Online (Sandbox Code Playgroud)

在包含标记模板(my_nav_inclusion_tag.html)中,尝试以下操作:

{% for link in links %}
   <a href="{{link.1}}">{{link.0}}</a> 
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

在您需要显示导航的任何模板中,只需调用包含标记,例如:

{% my_nav_inclusion_tag %}
Run Code Online (Sandbox Code Playgroud)