Django 模板如果没有按预期工作
Django Template If does not work as expected
我正在尝试使用 Django 创建一个 HTML 下拉列表,它在模板中显示数字 1 - 250,并且总是 select 是重新加载后的最后一个 selection这一页。为此,我使用变量“clea”从我的“views.py”中的 url 获取带有“request.GET.get('clea')”的值,将其作为上下文传递。
到select 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”。
有谁知道这可能是什么?
我怀疑 if
语句包含您不想要的内容。
这个:
{% if "{{ forloop.counter }}" == "{{ data.VIEW.clea }}" %}
只是比较两个 hard-coded 字符串:"{{ forloop.counter }}"
和 "{{ data.VIEW.clea }}"
。而且它们总是不同的,所以该子句总是错误的。
尽量避免使用引号(参见 example of a similar usage):
{% if forloop.counter == data.VIEW.clea %}
确保 data.VIEW.clea
是一个整数。
我正在尝试使用 Django 创建一个 HTML 下拉列表,它在模板中显示数字 1 - 250,并且总是 select 是重新加载后的最后一个 selection这一页。为此,我使用变量“clea”从我的“views.py”中的 url 获取带有“request.GET.get('clea')”的值,将其作为上下文传递。
到select 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”。 有谁知道这可能是什么?
我怀疑 if
语句包含您不想要的内容。
这个:
{% if "{{ forloop.counter }}" == "{{ data.VIEW.clea }}" %}
只是比较两个 hard-coded 字符串:"{{ forloop.counter }}"
和 "{{ data.VIEW.clea }}"
。而且它们总是不同的,所以该子句总是错误的。
尽量避免使用引号(参见 example of a similar usage):
{% if forloop.counter == data.VIEW.clea %}
确保 data.VIEW.clea
是一个整数。