我在django应用程序中有一个简单的视图,我只想在其中一个表单有效的时候显示它。我有一些类似的东西:
@login_required
@require_role('admin')
def new_package(request):
invoicing_data_form = InvoicingDataForm(instance=request.user.account.company.invoicingdata)
if invoicing_data_form.is_valid():
# all here
return HttpResponse('Form valid')
else:
logger.info("Form invalid")
return HttpResponse(json.dumps(invoicing_data_form.errors)我总是收到表单无效的日志信息消息,但是,我在
invoicing_data_form.errors这非常奇怪,因为我正在使用用户输入数据在其他视图中验证这个表单,它工作得很好。有什么想法吗?
编辑:只是为了说明一下。在此表单中,我不会要求用户提供任何数据。我正在使用这个表单来验证一些模型实例(这个表单是ModelForm的子类化)。
发布于 2015-02-17 06:07:11
这是因为你没有“喂”你的表单。
执行以下操作:
invoicing_data_form = InvoicingDataForm(instance=invoice, data=request.POST or None)发布于 2015-02-17 12:12:48
您有一个未绑定的表单。https://docs.djangoproject.com/en/1.7/ref/forms/api/#bound-and-unbound-forms
表单实例要么绑定到一组数据,要么取消绑定。
如果它将绑定到一组数据上,那么它就能够验证该数据,并用显示在HTML中的数据将表单呈现为HTML。
如果它是未绑定的HTML,它就不能进行验证(因为没有要验证的数据!),但它仍然可以将空白表单呈现为。
要将数据绑定到表单,需要将数据作为字典作为第一个参数传递给form类构造函数:
invoicing_data_form = InvoicingDataForm(request.POST or None, instance=invoice)发布于 2016-01-07 17:36:53
如果您已经使用request.POST or None为表单提供了request.POST,但它仍然是无效的且没有错误,请检查是否有任何重定向正在进行。重定向将丢失您的POST数据,并且您的表单将无效且没有错误,因为它是未绑定的。
https://stackoverflow.com/questions/28551146
复制相似问题