首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django模板If未按预期工作

Django模板If未按预期工作
EN

Stack Overflow用户
提问于 2020-10-16 23:01:02
回答 1查看 27关注 0票数 0

我正在尝试使用Django创建一个HTML下拉菜单,它在模板中显示数字1- 250,并在重新加载页面后始终选择最后一个选项。为此,我使用一个变量"clea“从我的"views.py”中的url中获取带有"request.GET.get('clea')“的值,并将其作为上下文传递。

为了选择drop-dwon中的值,我使用了以下语法:

代码语言:javascript
运行
复制
        # Context: {"VIEW": {"clea": "140"}
        
        <label style="color: white;">Amount</label>
        <select class="browser-default" id="clea">

        {% for _ in ''|center:250 %}

        <script>console.log("{{ forloop.counter }}" == "{{ data.VIEW.clea }}")</script>

        {% if "{{ forloop.counter }}" == "{{ data.VIEW.clea }}" %}

          <script>console.log("Worked")</script>
          <option value={{ forloop.counter }} selected> {{ forloop.counter }} </option>

        {% else %}
        
          <option value={{ forloop.counter }}> {{ forloop.counter }} </option>
        
        {% endif %}
        
        {% endfor %}
        
        <script>console.log("Finished")</script>

      </select>

除了Django模板中的If语句之外,一切都可以正常工作!在日志中,您可以看到它总是记录为假,除非forloop.counter和data.VIEW.clea相等,则如预期的那样为真。但是它永远不会记录"Worked",尽管它在上面的行中记录了"true“。有人知道这可能是什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 23:21:26

我怀疑if语句包含您不想要的东西。

这一点:

代码语言:javascript
运行
复制
{% if "{{ forloop.counter }}" == "{{ data.VIEW.clea }}" %}

只比较两个硬编码的字符串:"{{ forloop.counter }}""{{ data.VIEW.clea }}"。它们总是不同的,所以子句总是假的。

尽量避免使用引号(参见example of a similar usage):

代码语言:javascript
运行
复制
{% if forloop.counter == data.VIEW.clea %}

不过,要确保data.VIEW.clea是一个整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64391673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档