django模板:如何包含变量

时间:2012-11-30 16:26:44

标签: django templates

我想在for循环中创建一系列变量,例如name0,name1,....我该怎么做?感谢。

    {% for i in '1234567890' %}
        {% if name{{forloop.counter0}} %}
        ...
        {% endif %}
        ...
        {{name{{forloop.counter0}}}}
        ...
    {% endfor %}

2 个答案:

答案 0 :(得分:2)

就像

一样简单
{{ name }}{{ forloop.counter0 }}

对于if,你应该使用" with"语句:

{% with name|add:forloop.counter0 as if_test %}
{% if if_test %}
... <!-- do whatever you need to do here -->

所有这一切都必须在你的for循环中

答案 1 :(得分:1)

正如您所看到的,Django模板语言会努力阻止您执行您尝试执行的操作,鼓励您在视图代码中执行数据处理,而不是模板。对于您的示例,您可以尝试在视图代码中执行以下操作:

context['names'] = [name for name in names[:10]]

...而不是为每个名称创建单独的变量。

然后在你的模板中:

{% for name in names %}
    {% if name %}
    ...
    {% endif %}
    ...
    {{name}}
    ...
{% endfor %}

据我所知,这将与您的代码具有相同的效果,但您将在视图中对名称进行聚合,而不是模板。如果我错误地阅读了您的代码的意图,请提供更多上下文,但似乎您没有做任何需要模板逻辑的事情。