Django模板替代`with`标签

时间:2013-05-02 10:19:45

标签: django django-templates

在Django模板中,可以使用with标记向上下文引入新的命名变量:

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

我发现自己经常使用它来重命名变量,以便我可以包含可重复使用的模板:

{% with user_list=request.user.friends %}
    {% include '_user_list.html' %}
{% endwith %}

有没有办法在不使用with标记的情况下在上下文中引入新变量?我想象的是像set这样的标记,您可以像{% set user_list=request.user.friends %}一样调用它,然后不需要使用{% endset %}标记将其关闭。这类似于函数中的{% trans "This is the title" as the_title %}

如果没有办法做到这一点,为什么这不是一个好/ pythonic / django做事的方式有什么原因?

1 个答案:

答案 0 :(得分:2)

如果您查看include template tag,您会看到您可以在变量本身内为模板分配和传递变量:

  

您可以使用关键字参数将其他上下文传递给模板:

{% include "name_snippet.html" with person="Jane" greeting="Hello" %}