如何在Django模板中设置var

时间:2019-03-23 17:11:57

标签: django django-templates

我想从Django模板中的字典设置一些变量。我访问字典项目和值,但是当我尝试从中设置一些值时,它不起作用

这有效:

{% for key, value in v.items %}
   {% if key == 'title' %}<tr>{{ value }}</tr>{% endif%}
   {% if key == 'name' %}<tr>{{ value }}</tr>{% endif%}
{% endfor %}

这不起作用:

{% for key, value in v.items %}
   {% if key == 'title' %}{% with title as value %}{%$ endwith %}{% 
endif%}
   {% if key == 'name' %}{% with name as value %}{%$ endwith %}{% 
endif%}
{% endfor%}
<tr>{{ title }}</tr><tr>{{ name }}</tr> 

我想从dict值在Django模板内设置VAR!

2 个答案:

答案 0 :(得分:0)

with用于定义本地上下文,而不是“设置变量”。因此,正如Pankaj所说,除非您的变量在{% with ... %}{% endwith %}

内,否则它们将不起作用

请注意,它应该是with existing_var as new_var_name,而不是相反。您也不需要$来关闭标签。

因此,这将打印出变量(不完全符合您的要求,但会显示出来):

{% for key, value in v.items %}
   {% if key == 'title' %}{% with value as title %}{{ title }}{% endwith %}{% 
endif%}
   {% if key == 'name' %}{% with value as name %}{{ name }}{% endwith %}{% 
endif%}
{% endfor%}

但是,您不需要执行此操作(仅更改变量名是没有意义的)。如果v是字典,为什么不这样做:

<tr>{{ v.title }}</tr><tr>{{ v.name }}</tr>

通常,您实际上不应该真正尝试在Django模板中设置变量。如果您需要提取数据/执行转换,则可能应该在视图中或使用模板标签进行。

答案 1 :(得分:0)

@geekfish的解决方案:

{% for key, value in v.items %}
    <tr>{{ v.title }}</tr><tr>{{ v.name }}</tr>
{% endfor%}

;)