django 可以修改模板中的变量值吗?

Posted

技术标签:

【中文标题】django 可以修改模板中的变量值吗?【英文标题】:Is django can modify variable value in template? 【发布时间】:2015-11-02 04:21:29 【问题描述】:

我想写一个只渲染一次的模板。

我的想法是创建一个标志变量来检查它是否是第一次。

我的代码

% with "true" as data %
    % if data == "true" %
        //do something
        ** set data to "false" **
    % else %
        //do something
    % endif %
% endwith %

我不知道如何更改django模板中的变量。可以吗?或者有更好的方法吗?

【问题讨论】:

您是否尝试通过 for 循环 (forloop.first) 执行此操作?你想达到什么目标? @Sayse 谢谢这个解决方案可以解决我的问题 【参考方案1】:

这可以通过 Django 自定义过滤器来完成

django custom filter

def update_variable(value):
    data = value
    return data

register.filter('update_variable', update_variable)

% with "true" as data %
    % if data == "true" %
        //do somethings
        update_variable|value_that_you_want
    % else %
        //do somethings
    % endif %
% endwith %

【讨论】:

谢谢,但是是否有另一种方法可以通过不使用自定义标签或自定义过滤器来更改变量值? 模板应该只包含渲染逻辑,在 django 视图中完成所有这些计算。 with 语句会更好。见***.com/questions/11324839/… 如果我不想打印那个变量怎么办?【参考方案2】:

NIKHIL RANE 的回答对我不起作用。自定义simple_tag() 可以用来做这项工作:

@register.simple_tag
def update_variable(value):
    """Allows to update existing variable in template"""
    return value

然后像这样使用它:

% with True as flag %
    % if flag %
        //do somethings
        % update_variable False as flag %
    % else %
        //do somethings
    % endif %
% endwith %

【讨论】:

以上是关于django 可以修改模板中的变量值吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以修改另一个合同中的变量值?

Django 使用getattr() 方法获取配置文件的变量值

如何更新数据流 ssis 中的变量值?

读取环境Jmeter中的变量值

怎么在debug时显示全部的变量值

批处理文件中的多行 IF 语句内的变量值未递增 [重复]