在 django 模板中设置和重置变量的值

Posted

技术标签:

【中文标题】在 django 模板中设置和重置变量的值【英文标题】:Setting and resetting value of variable in django template 【发布时间】:2011-08-06 19:33:13 【问题描述】:

我想在 django 模板中设置和重置标志变量。有没有办法做到这一点?

% for software in softwares %
    //here want to asign default value to flag( flag = False)

    % for mysoftware in mysoftwares %
        % if mysoftware.name == software.name %
        //here want to set value to True to flag( flag = True)
         software.name <br />
        % endif %
    % endfor %

    //check flag here
    % if flag == False %
    Software not assigned.
    % endif %
% endfor %

【问题讨论】:

【参考方案1】:

据我所知,没有办法做到这一点。也许在您的视图中预先计算一个元组列表,然后对其进行迭代 - 显示结果。例如:

% for software, assigned in software_list %
  % if assigned %
     software.name 
  % else %
    Software not assigned
  % endif %
% endif %

然后,在您看来,只需使用简单的 python 构造填充 software_list 数据:

names = [mysoftware.name for mysoftware in mysoftwares]
software_list = [(software, software.name in names) for software in softwares]

并将其添加到您的上下文中。

在模板中尝试做太多事情往往很诱人,而这并不是他们真正的目的。如果您将逻辑保存在它所属的 python 中,您将获得更好的可读性。

【讨论】:

以上是关于在 django 模板中设置和重置变量的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中设置和获取会话变量?

Django 将保存变量重置为 0,最好在主视图中

如何在 Django 中显式重置模板片段缓存?

在新页面上重置“运行总计字段”

如何自定义 django rest auth 密码重置电子邮件内容/模板

全局变量在 Python Canvas 中设置然后重置