【问题标题】:Trouble posting un-checked checkbox value in django无法在 django 中发布未选中的复选框值
【发布时间】:2012-04-14 03:40:49
【问题描述】:

我在 Django 表单 (Django v1.2) 中发布复选框状态时遇到问题。

这是我模型中的字段:

subscribe = models.BooleanField(default=False, verbose_name="Subscribe")

在相关模板文件中:

{{ form.subscribe }}

这会使复选框最初处于未选中状态。但是当我发布表单时(不涉及其他任何内容),django 在request.POST 中发送u'subscribe': [u'on']。也就是说,无论复选框是否被选中,响应总是包含u'subscribe': [u'on']

不勾选复选框时,模板中的<input>标签呈现为
<input type="checkbox" name="subscribe" id="id_subscribe" />

并且,当复选框被选中时,它会呈现为
<input type="checkbox" name="subscribe" id="id_subscribe" checked="checked" />

我这里有什么遗漏吗?

【问题讨论】:

  • 表单验证后你会得到什么? form.cleaned_data['subscribe'] 中的值是否会根据复选框状态而变化?您可以发布 ModelForm 声明吗?
  • 问题可能出在您的观点中,您是如何收集数据的?
  • @cfedermann 表单正在验证。我在表单验证后打印request.POST。它打印u'subscribe': [u'on']。 ModelForm 没有什么特别之处。 subscribe 以外的字段的一些干净功能。我还在__init__ 中将一些样式应用于小部件。就这样。 @zallarak 我从 request.POST 收集数据并保存如下表格:SubscriberForm(request.POST, instance=user).save()

标签: python django checkbox web


【解决方案1】:

您的浏览器将值发布为“on”。这是未设置 value="blah" 属性的复选框输入的正常行为。如果即使未选中复选框,它也始终显示为“打开”,那么浏览器端可能存在某些设置。

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 2013-05-21
    • 2012-07-24
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多