【问题标题】:Assign a value to a variable already declared in the template in django?为django模板中已经声明的变量赋值?
【发布时间】:2020-09-30 03:00:20
【问题描述】:

我用谷歌搜索但找不到解决方案。我去的地方想到了一些答案,例如This answer
我浏览过的一些官方文档Trans TagBuilt-In Tags

模板视图

{% load custom_tags %}

{% for each in content %}
  {% with tempID='' %} # It is initially empty string
    {% if each.contentID != tempID %}
      {% tempID = each.contentID %} # Want to assign new value to tempID
        ....
         ..
    {% endif %}
  {% endwith %}
{% endfor %}

是否有任何方法可以分配标签变量。我也尝试了 custom_tags 过滤器。没用。

【问题讨论】:

    标签: python html django django-template-filters django-custom-tags


    【解决方案1】:

    有什么方法可以用标签变量赋值吗?

    是的,您可以简单地使用{% with tempID= each.contentID %},在这种情况下,它将为变量分配一个新值。

    替代方案

    模板中的变量仅用于显示值,并不经常用于执行计算或重新分配的方式。在这种情况下,尽管您可以使用Django custom filter 来解决它。请参阅下面的示例。

    .py 文件 - 为变量赋值

    @register.filter(name='update_variable')
    def update_variable(value):
        data = value
        return data
    
    

    .HTML文件

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

    请注意,当您使用Django filters 时,变量实例驻留在Python 中,而不是直接在Template 中。

    【讨论】:

    • 我之前尝试过这个解决方案,但没有奏效!正如我附加的链接。你没有得到我不想返回值的问题,我想存储以供将来检查,因为在你的情况下,返回返回存储在数据中的值。但我想存储在带有标签的模板变量中
    • 顺便说一句,我可以使用我之前定义的 tempID 变量并再次使用与标签相同的变量,这会召回之前定义的变量还是只定义新变量?
    • 啊……在这种情况下,过滤器会很好。只需将其存储为全局变量,然后您就可以使用它来签入您想要的案例。至于第二个问题,我相信它会覆盖它,所以称之为定义的新问题
    • 为了扩展,如果你想使用filters方法然后定义一种setter和getter方法,后者返回它而前者不会。查看自定义过滤标签,您会找到解决方案
    • 见我添加但它没有覆盖。我在 for 循环中添加了不想为每个图像重复名称 ID 的图像
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2016-04-15
    相关资源
    最近更新 更多