【发布时间】:2019-01-26 22:26:18
【问题描述】:
我有一个简单的 HTML 表单,我正在尝试使用 Django 表单进行验证。问题是 Django 的表单验证只会识别is_kit 的值,如果它是'True'。 (当为'False'时,会报错说该字段是必填的。下面是表格:
<form method="post"> {% csrf_token %}
<input type="hidden" name="part_id" value="{{ part.id }}" />
<input type="hidden" name="is_kit" value="False" />
<input type="submit" class="btn btn-link" value="Add to Cart"/>
</form>
这是 Django 表单:
class AddItemToCartForm(forms.Form):
part_id = forms.IntegerField()
is_kit = forms.BooleanField()
这是我观点的相关部分:
def post(self, request, id):
print(request.POST)
print(request.POST.get('is_kit'))
form = AddItemToCartForm(request.POST)
print(form.errors)
我的服务器给出的输出在这里:
<QueryDict: {'is_kit': ['False'], 'part_id': ['1'], 'csrfmiddlewaretoken': ['X2vkpwG6GJmK79vypFPAveTzVkrxBauJWgfnRvAtJVcZ8NwBokjQhCnfGN9dFFYF']}>
False
<ul class="errorlist"><li>is_kit<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
我相信我的模板应该可以工作,因为查看 the source code、forms.BooleanField 应该将 POST 数据中的字符串 'False' 转换为 python False 值。
正如我上面提到的,如果 is_kit 设置为 'True',表单将完美验证。
【问题讨论】: