首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django表单返回is_valid() = False,没有错误

Django表单返回is_valid() = False,没有错误
EN

Stack Overflow用户
提问于 2015-02-17 06:03:14
回答 5查看 15.4K关注 0票数 13

我在django应用程序中有一个简单的视图,我只想在其中一个表单有效的时候显示它。我有一些类似的东西:

代码语言:javascript
复制
@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)

我总是收到表单无效的日志信息消息,但是,我在

代码语言:javascript
复制
invoicing_data_form.errors

这非常奇怪,因为我正在使用用户输入数据在其他视图中验证这个表单,它工作得很好。有什么想法吗?

编辑:只是为了说明一下。在此表单中,我不会要求用户提供任何数据。我正在使用这个表单来验证一些模型实例(这个表单是ModelForm的子类化)。

EN

回答 5

Stack Overflow用户

发布于 2015-02-17 06:07:11

这是因为你没有“喂”你的表单。

执行以下操作:

代码语言:javascript
复制
invoicing_data_form = InvoicingDataForm(instance=invoice, data=request.POST or None)
票数 22
EN

Stack Overflow用户

发布于 2015-02-17 12:12:48

您有一个未绑定的表单。https://docs.djangoproject.com/en/1.7/ref/forms/api/#bound-and-unbound-forms

表单实例要么绑定到一组数据,要么取消绑定。

如果它将绑定到一组数据上,那么它就能够验证该数据,并用显示在HTML中的数据将表单呈现为HTML。

如果它是未绑定的HTML,它就不能进行验证(因为没有要验证的数据!),但它仍然可以将空白表单呈现为

要将数据绑定到表单,需要将数据作为字典作为第一个参数传递给form类构造函数:

代码语言:javascript
复制
invoicing_data_form = InvoicingDataForm(request.POST or None, instance=invoice)
票数 10
EN

Stack Overflow用户

发布于 2016-01-07 17:36:53

如果您已经使用request.POST or None为表单提供了request.POST,但它仍然是无效的且没有错误,请检查是否有任何重定向正在进行。重定向将丢失您的POST数据,并且您的表单将无效且没有错误,因为它是未绑定的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28551146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档