【问题标题】:Django template tag vs include for navDjango 模板标签与包含导航
【发布时间】:2013-02-13 01:51:02
【问题描述】:

刚接触 Django 并第一次使用模板引擎。我的问题是……

我的 base.html 中有一个导航 div。现在在其他语言中,我会为 html 的 nav 元素使用包含。在 Django 中,我看到我们有一个叫做模板标签的东西。那么我应该使用模板标签来显示导航或旧学校包含的演示元素(我相信 Django 也支持)?

为了让这个问题成为一个 stackoverflow 问题,一个例子会很有用。

谢谢

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    模板标签实际上是为了应用特殊处理来实现您想要的输出。使用模板标签可以让您访问 Python 语言的所有功能。 django 模板语言要简单得多。

    我建议您坚持使用包含而不是编写模板标签。它会更容易阅读。

    请记住,您应该在视图中(或模板/模板标签之外的某处)生成变量列表。

    def your_view(request):
        #...
        nav_items = Category.objects.filter(include_in_nav=True)
        return render(request, 'your_page.html', {'nav_items': nav_items})
    

    然后在 your_page.html 中你要做的 -

    {% include 'nav.html' %}
    

    然后nav.html 将类似于 -

    <nav>
        {% for item in nav_items %}
            <a href="{% url cat_page item %}>{{ item.title }}</a>
        {% endfor %}
    </nav>
    

    查看templatescustom template tags 上的文档。

    【讨论】:

    • 感谢您写得很好的答案,完美的信息正是我所追求的
    • performance相比,这两种方法之间有什么注意事项吗?
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2016-08-12
    • 2018-02-22
    • 2017-01-05
    • 2011-08-10
    • 2014-05-03
    • 2016-05-27
    相关资源
    最近更新 更多