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 模板中的另一个字段中更改后禁用复选框?