Django下拉循环

时间:2014-06-28 14:00:31

标签: html django

我的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”。那么如何创建一个声明,如果页面没有附加其他页面,则不会显示?谢谢,詹姆斯!

1 个答案:

答案 0 :(得分:0)

只需检查secondloop是否为空:

{% for nav in firstloop %}
{% if secondloop %}
...
{% endif %}
{% endfor %}

请注意,这比在这种情况下使用count更快,因为如果第二个循环包含项目,它将会循环,并且此方法将执行查询并缓存结果。 count会导致两个单独的查询。