【发布时间】:2019-12-18 08:17:59
【问题描述】:
我希望能够使用管理面板创建下拉菜单。此时在模型中,我可以选择子页面是否是另一个子页面以及应该以什么顺序显示。但我不知道如何在模板中实现所有这些。有人可以帮忙吗?
型号:
class Subpage(MPTTModel):
title = models.CharField(max_length=254)
slug = models.SlugField(unique=True)
display_order = models.IntegerField(default=1)
parent = TreeForeignKey('self', verbose_name='is child:', on_delete=models.CASCADE, null=True, blank=True)
查看:
def generated_page(request, slug):
unique_subpage = get_object_or_404(Subpage, slug=slug)
homepage = Homepage.objects.first()
subpage_sorted = Subpage.objects.exclude(is_active=False).order_by('display_order')
context = {
'unique_subpage': unique_subpage,
'subpage_sorted': subpage_sorted,
'homepage': homepage,
}
if unique_subpage.is_active or unique_subpage.slug == 'admin':
return render(request, 'subpage.html', context)
else:
return render(request, '404.html', context)
模板:
{% recursetree subpage_sorted %}
<li class="nav-item dropdown">
{% if not node.is_child_node %}
<a class="nav-link" href="{% url 'generated_page' node.slug %}">{% trans node.title %}</a>
{% elif node.is_child_node %}
<a class="nav-link dropdown-toggle" href="{% url 'generated_page' node.parent.slug %}" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{% trans node.parent.title %}</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="{% url 'generated_page' node.slug %}">{% trans node.title %}</a>
{% endif %}
</li>
{% endrecursetree %}
【问题讨论】:
标签: django django-models django-templates django-mptt mptt