django form:如何在模板中查看复选框状态

时间:2011-09-06 21:42:24

标签: django checkbox django-templates django-forms

我有一个带有复选框的表单可以正常工作,但是当用户提交表单时出现错误并且我的复选框被选中时,我需要更改包含复选框的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 }}不起作用

5 个答案:

答案 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附带的语言)这样做是一个非常糟糕的主意。

任何处理/计算都应在视图函数/类中完成。