为什么此代码不起作用,我从views.py获取变量“数据”
当我用类似“ 1”的数字更改data.numrooms时,它工作正常,但是使用不起作用的data.numrooms
<select class="form-control" name="numadults">
<option value=''>No. of Adult</option>
{% for i in range %}
{% if data.numadults == i %}
<option value="{{ i }}" selected>{{ i }}</option>
{% else %}
<option value="{{ i }}">{{ i }}</option>
{% endif %}
{% endfor %}
</select>
答案 0 :(得分:0)
为什么不在视图中放置该逻辑并将其传递给模板,如下所示:
# view
adult_range = list(map(lambda x: (x, True) if x == data.numadults else (x, False), range(1,10))
# Template
<option value=''>No. of Adult</option>
{% for i, selected in adult_range %}
{% if selected %}
<option value="{{ i }}" selected>{{ i }}</option>
{% else %}
<option value="{{ i }}">{{ i }}</option>
{% endif %}
{% endfor %}
答案 1 :(得分:0)
类似于ruddra的解决方案,最简单的方法可能是执行视图中的大部分逻辑:
adults = [(element, element.number == data.numadults) for element in adult_list]
这将为您提供两元组的(<adult object>, <boolean>)
列表,其中的布尔值表示您要在模板中决定是否使用selected
属性的条件。
然后,在模板中,您可以仅基于该布尔值作为条件:
<option value=''>No. of Adult</option>
{% for i, selected in adult_range %}
{% if selected %}
<option value="{{ i }}" selected>{{ i }}</option>
{% else %}
<option value="{{ i }}">{{ i }}</option>
{% endif %}
{% endfor %}
请注意,尽管您也可以在html标记中内联评估条件,如下所示:
<option value="{{ i }}" {% if selected %} selected {% endif %}>
这可能会使代码更具可读性。