Django模板如果没有按预期工作

Posted

技术标签:

【中文标题】Django模板如果没有按预期工作【英文标题】:Django Template If does not work as expected 【发布时间】:2021-01-31 02:59:00 【问题描述】:

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

要选择 drop-dwon 中的值,我有以下语法:

        # 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 语句之外,一切都有效! 在日志中,您可以看到它始终记录为 false,除非 forloop.counter 和 data.VIEW.clea 相等,那么它为 true,如预期的那样。但它永远不会记录“Worked”,尽管它在上面的行中记录“true”。 有谁知道这可能是什么?

【问题讨论】:

【参考方案1】:

我怀疑if 语句包含您不想要的内容。

这个:

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

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

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

% if forloop.counter == data.VIEW.clea %

请确保 data.VIEW.clea 是一个整数。

【讨论】:

以上是关于Django模板如果没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Cloudformation YAML 模板如果没有按预期工作

Django queryset iterator() 没有按预期工作

Django ModelForms - “实例”没有按预期工作

Django 1.11:模板中的 URL 函数未按预期工作

For 循环在 Django、HTML 中无法按预期工作

Django 引导警报未按预期工作