我的HTML代码
{% for nav in firstloop %}
<li class="has-dropdown">
<a href="/{{ nav.slug }}">{{ nav.title }}</a>
<ul class="dropdown">
{% for dropdown in secondloop %}
{% if nav.title == dropdown.parent.title %}
<li><a href="/{{ dropdown.slug }}">{{ dropdown.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
我的背景
def homepage(request):
try:
return {
"homepage": Page.objects.get(parent__isnull=True),
}
except Page.DoesNotExist:
return {'homepage':''}
def firstloop(request):
try:
return {
"firstloop": Page.objects.filter(parent=Page.objects.filter(slug="home"),),
}
except Page.DoesNotExist:
return {'firstloop':''}
def secondloop(request):
try:
return {
"secondloop": Page.objects.exclude(parent=Page.objects.filter(slug="home"),),
}
except Page.DoesNotExist:
return {'secondloop':''}
问题是没有“下拉列表”的页面仍会在div中呈现类“has-dropdown”。那么如何创建一个声明,如果页面没有附加其他页面,则不会显示?谢谢,詹姆斯!
答案 0 :(得分:0)
只需检查secondloop
是否为空:
{% for nav in firstloop %}
{% if secondloop %}
...
{% endif %}
{% endfor %}
请注意,这比在这种情况下使用count
更快,因为如果第二个循环包含项目,它将会循环,并且此方法将执行查询并缓存结果。 count
会导致两个单独的查询。