我想这样做:
{% for egg in eggs %}
<p>{{ egg.spam }}</p>
{% if egg.is_cool %}
{% myvariable = egg %} // Possible in any way?
{% endif %}
{% endfor %}
请原谅JavaScript风格的评论(它显示为对SO的评论)
答案 0 :(得分:3)
我认为您最接近的是with
代码:http://docs.djangoproject.com/en/dev/ref/templates/builtins/#with。
如果你说试图在模板中展示一个项目,我可以想象做类似的事情:
<div class="special">
{% with some_list.first as special_item %}
{{ specialitem }}
{% endwith %}
</div>
<div class="everything">
{% for item in some_list %}
{{ item }}
{% endfor %}
</div>
如果你想要一些特殊的逻辑来确定哪一个是特殊项目,我会向对象添加一个方法(所以你最终得到:{% with some_collection.my_method as special_item %}
)或者在传递给它之前确定特殊项目风景。希望有所帮助。
答案 1 :(得分:2)
欢迎使用Django模板。
这个问题可以通过发布到DjangoSnippets.com的最早的片段之一轻松解决:Expr tag。
人们可以整天争论逻辑与模板的分离,但忽略了存在业务逻辑,它属于模型或视图,以及表示逻辑在模板中仅属于 。如果您有很多演示逻辑,您可能需要考虑对部分或全部模板使用Jinja2。警告:虽然Jinja2 看起来很像Django的模板语言,但与Custom Template Tags之类的内容不兼容。
答案 2 :(得分:1)
是的,您可以使用with
构造:
{% with myvariable as egg %}
do stuf
{% endwith %}
答案 3 :(得分:1)
我认为最好在视图中进行这种测试和设置行为,而不是模板。如果有的话,它会让你在需要的时候更好地控制缓存。