我有一个带有复选框的表单可以正常工作,但是当用户提交表单时出现错误并且我的复选框被选中时,我需要更改包含复选框的div类。所以我在模板中尝试使用{{ form.mycheckbox.data }}
,并在页面加载时显示 False 。现在,当用户单击复选框并且表单有错误时,它会显示 on 。所以我试过了:
{{ if form.mycheckbox.data == True }}
不起作用
{{ if form.mycheckbox.data != False }}
不起作用
{{ if form.mycheckbox.data == 'on' }}
不起作用
{{ if form.mycheckbox.data == on }}
不起作用
答案 0 :(得分:19)
使用{% if form.mycheckbox.value %}
。如果选中该框,则评估为true。对于相反的行为,请使用{% if not form.mycheckbox.value %}
。
请注意语法为{% if ... %}
,而不是{{ if ...}}
。百分比括号用于命令,双括号用于输出变量。
答案 1 :(得分:15)
在models.py中:
class Article:
published = BooleanField()
(...)
在模板中:
<input type="checkbox" name="published" {% if article.published %}checked{% endif %} />
答案 2 :(得分:5)
为我工作:
{% for foo in form.tags %}
<label class="publication-tag">
<input class="publication-tag__checkbox"
{% if foo.choice_value in foo.value %}checked="checked"{% endif %}
type="checkbox"
name="{{ foo.name }}"
value="{{ foo.choice_value }}">
{% endfor %}
这:
{% if foo.choice_value in foo.value %}checked="checked"{% endif %}
答案 3 :(得分:0)
同时,首先应该在模型中使用BooleanField,而不是CharField。 然后,有两种访问方式:
只需将{{form.yourField}}放在模板中(首选)
,或者使用{%,如果form.yourFiled.value%}已选中{%endif%}
答案 4 :(得分:-2)
Django模板在服务器端进行评估。
我认为您要查看JavaScript以检查复选框的状态。使用模板语言(特别是Django附带的语言)这样做是一个非常糟糕的主意。
任何处理/计算都应在视图函数/类中完成。