如何在 Django 模板中更新由“with”设置的变量
Posted
技术标签:
【中文标题】如何在 Django 模板中更新由“with”设置的变量【英文标题】:How do I update a variable set by 'with' in Django Template 【发布时间】:2021-09-12 22:24:18 【问题描述】:以下是我需要更新变量的代码。
% with a=1 %
% for x in object_list %
% if 'clone' in x.game and a is 1 %
<div class="alert alert-primary">
<h2 class="p-3"> x.title </h2>
</div>
a=2 # here is where I update it
% endif %
% endfor %
% endwith %
但不是 a=2
将a
设置为2,而是抛出以下错误:
TemplateSyntaxError at /
Could not parse the remainder: '=2' from 'a=2'
【问题讨论】:
这个想法是不去更新变量。% with a=1 %
将为a
赋值,Django 模板不重新定义a
变量。这样的逻辑确实不属于模板,但属于视图。
好的。感谢您的快速回复。
【参考方案1】:
正如大家所说,您可以在视图中执行此逻辑。但是,您可以添加 1,而不是将 a
重新分配为 2:
% with a=1 %
% for x in object_list %
% if 'clone' in x.game and a is 1 %
<div class="alert alert-primary">
<h2 class="p-3"> x.title </h2>
</div>
a|add:"1" # this is the changed code
% endif %
% endfor %
% endwith %
【讨论】:
哦,对不起,我想我是为 Django 3.2(撰写本文时的最新版本)编写的。对此很抱歉,但我建议您开始使用 Django 3,因为它有很多新功能。 :)【参考方案2】:无法在with
模板标签中重新分配变量。
您应该在后端(视图)中执行此操作,或者通过将变量加载到 javascript 中并执行您想要执行的操作,它可以在客户端执行。
【讨论】:
以上是关于如何在 Django 模板中更新由“with”设置的变量的主要内容,如果未能解决你的问题,请参考以下文章
带有 if、with、for 和 math-add 用法的 Django 模板操作
如何结合 Django 内置的“with”标签使用自定义模板标签?