django 表单:如何检查模板中的复选框状态

Posted

技术标签:

【中文标题】django 表单:如何检查模板中的复选框状态【英文标题】:django form: how to check out checkbox state in template 【发布时间】: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' 有效。对不起 【参考方案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%

【讨论】:

以上是关于django 表单:如何检查模板中的复选框状态的主要内容,如果未能解决你的问题,请参考以下文章

在我的 Django 模板中使用复选框表单时没有 POST 响应

如何在 django 模板中的另一个字段中更改后禁用复选框?

如何检查 Django 生成的多个复选框的状态?

姜戈。如何在布尔表单字段上应用 css 样式?

验证模板表单中的复选框列表(不是反应式表单)Angular 2

如何使用jquery检查当前表单中的所有复选框?