【问题标题】:django form: how to check out checkbox state in templatedjango 表单:如何检查模板中的复选框状态
【发布时间】:2011-11-11 16:39:43
【问题描述】:

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

【问题讨论】:

  • 我用 div 类名打错字了,=='on' 有效。对不起

标签: django checkbox django-templates django-forms


【解决方案1】:

使用{% if form.mycheckbox.value %}。如果选中该框,这将评估为 true。对于相反的行为,请使用{% if not form.mycheckbox.value %}

注意语法是{% if ... %},而不是{{ if ...}}。百分括号用于命令,双括号用于输出变量。

【讨论】:

    【解决方案2】:

    在models.py中:

    class Article:
        published = BooleanField()
        (...)
    

    在模板中:

     <input type="checkbox" name="published" {% if article.published %}checked{% endif %} />
    

    【讨论】:

      【解决方案3】:

      为我工作:

      {% 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 %}
      

      【讨论】:

      • 对上述if condition的更正为{% if foo.choice_value in forms.tags.value %}checked="checked"{% endif %}
      • {% if foo.choice_value in foo.value %} 这很好用。
      【解决方案4】:

      同时,首先您应该在模型中使用 BooleanField,而不是 CharField。 那么,有两种访问方式:

      • 只需将 {{form.yourField}} 放入您的模板中(首选)

      • 或者,使用 {% if form.yourFiled.value %} 检查 {%endif%}

      【讨论】:

        猜你喜欢
        • 2013-05-08
        • 2015-12-11
        • 1970-01-01
        • 2020-01-01
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2013-08-21
        • 2012-04-18
        相关资源
        最近更新 更多