如何在 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”标签使用自定义模板标签?

如何更新 django 模板中的渲染变量?

更新模板内变量的值 - django

无模板 Django + AJAX:Django 的 CSRF 令牌是不是在浏览会话过程中更新?

Django:如何在模板中使用设置? [复制]