Python Django localflavor字段覆盖表单

Python Django localflavor字段覆盖表单,python,django,django-localflavor,Python,Django,Django Localflavor,我有下面的表单,它在提交时生成一个值错误 值错误位于/en/orders/create/ 视图orders.views.order_create未返回HttpResponse对象。它没有返回任何结果 我的表格: 来自django导入表单 从。模型进口订单 从localflavor.us.forms导入USZipCodeField 类OrderCreateFormforms.ModelForm: 邮政编码=USZipCodeField 类元: 型号=订单 字段=[“名字”、“姓氏”、“电子邮件”、

我有下面的表单,它在提交时生成一个值错误

值错误位于/en/orders/create/

视图orders.views.order_create未返回HttpResponse对象。它没有返回任何结果

我的表格:

来自django导入表单 从。模型进口订单 从localflavor.us.forms导入USZipCodeField 类OrderCreateFormforms.ModelForm: 邮政编码=USZipCodeField 类元: 型号=订单 字段=[“名字”、“姓氏”、“电子邮件”、“地址”, “邮政编码”、“城市”] 我的模型:

类Ordermodels。模型: first_name=models.CharField_'first name',最大长度=50 last_name=models.CharField_'last name',最大长度=50 email=models.EmailField_uu'e-mail' 地址=型号。字符域地址,最大长度=250 邮政编码=型号。字符域邮政编码,最大长度=20 城市=型号。查尔菲尔德城市,最大长度=100 已创建=模型。DateTimeFieldDauto\u now\u add=True 更新=模型。DateTimeFieldDauto_now=真 paid=型号。BooleanFielddefault=错误 类元: 排序='-created', 定义自身: 返回f'Order{self.id}' 我的看法是:

def订单创建请求: 如果request.method==“POST”: form=OrderCreateFormrequest.POST 如果form.u有效: 订单.保存 request.session['order\u id']=order.id 重定向以返回付款 返回“支付:流程” 其他: form=OrderCreateForm 返回渲染请求, “orders/order/create.html”, {'cart':cart'form':form} 回溯:

环境: 申请方式:邮寄 请求URL:http://127.0.0.1:8000/en/orders/create/ Django版本:3.0.6 Python版本:3.8.2 已安装的应用程序: ['django.contrib.admin', “django.contrib.auth”, “django.contrib.contenttypes”, “django.contrib.sessions”, “django.contrib.messages”, “django.contrib.staticfiles”, “罗塞塔”, “帕勒”, “本地风味”, 'shop.apps.ShopConfig', 'cart.apps.CartConfig', 'orders.apps.OrdersConfig', 'payment.apps.PaymentConfig', '优惠券.apps.CouponsConfig'] 已安装的中间件: ['django.middleware.security.SecurityMiddleware', “django.contrib.sessions.middleware.SessionMiddleware”, 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', “django.middleware.csrf.CsrfViewMiddleware”, 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.xframeoptions中间件'] 回溯最近一次呼叫上次: 文件/home/[user]/.virtualenvs/shop/lib/python3.8/site-packages/django/core/handlers/exception.py,第34行,在内部 response=get\u responserequest 文件/home/[user]/.virtualenvs/shop/lib/python3.8/site-packages/django/core/handlers/base.py,第124行,在“获取”响应中 升值误差 异常类型:ValueError位于/en/orders/create/ 异常值:视图orders.views.order\u create未返回HttpResponse对象。它没有返回任何结果。 该过程工作正常,并重定向到付款表单,表单中没有这一行:posal_code=USZipCodeField

我似乎不明白是什么原因造成了这个错误

预期行为:

在有效表单上,重定向到付款


在无效表单上,USZipCodeField引发的验证错误:以XXXXX或XXXXX-XXXX格式输入邮政编码。

我认为问题在于,如果表单无效,代码不会呈现表单。对于无效的表单,函数返回None,这正是您看到的错误消息。可能您提交的是空值或无效值?请尝试此修改的未测试版本:

def order_create(request):
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)

        if form.is_valid():
            order = form.save()

            request.session['order_id'] = order.id

            # redirect for payment return
            return redirect(reverse('payment:process'))

    else:
        form = OrderCreateForm()

    # FIXME Where does 'cart' come from?
    return render(request,
                  'orders/order/create.html',
                  {'cart': cart, 'form': form})
这行吗

您可能想考虑使用内置的CeaVeVIEW来避免样板窗体处理代码:

如果您没有使用过基于类的视图,那么这肯定是值得研究的。我发现使用它们我可以移动得更快一些,但它们确实需要一些时间来学习,并且在事情不起作用时使流程更难遵循。以下是基于类的视图的完整文档:

嗨,我是localflavor的维护者之一。你可能碰到了一只虫子。您使用的是哪个版本的Django和localflavor?你能在你的问题中包括完整的堆栈跟踪吗?如果是bug,我们应该在github中生成报告。谢谢。@BenKonrath,Django==3.0.6,Django localflavor==3.0.1。如果您需要任何其他详细信息,请告知。查看堆栈跟踪将非常有用。这节省了我复制和粘贴你的代码,看看哪里可以看得更远。