python - 解决视图没有返回 HttpResponse 对象。它返回 None 而不是
问题描述
我收到以下错误
请求方法:POST 请求 URL: http: //127.0.0.1 :8000/orders/place_order/ Django 版本:3.1
Exception Value:
The view orders.views.place_order didn't return an HttpResponse object. It returned None instead.
这是我的views.py
文件的片段
if request.method == 'POST':
form = OrderForm(request.POST)
if form.is_valid():
print('we are here checking if the form is valid')
data = Order()
data.user = current_user
data.first_name = form.cleaned_data['first_name']
data.last_name = form.cleaned_data['last_name']
data.phone = form.cleaned_data['phone']
data.email = form.cleaned_data['email']
data.address_line_1 = form.cleaned_data['address_line_1']
data.address_line_2 = form.cleaned_data['address_line_2']
data.country = form.cleaned_data['country']
data.state = form.cleaned_data['state']
data.city = form.cleaned_data['city']
data.order_note = form.cleaned_data['order_note']
data.order_total = grand_total
data.tax =tax
data.ip = request.META.get('REMOTE_ADDR')
data.save()
return redirect('checkout')
else:
return redirect('checkout')
解决方案
如果表单无效,您的视图也应该返回响应,您可以引发异常:
if request.method == 'POST':
form = OrderForm(request.POST)
if form.is_valid():
print('we are here checking if the form is valid')
data = Order()
data.user = current_user
data.first_name = form.cleaned_data['first_name']
data.last_name = form.cleaned_data['last_name']
data.phone = form.cleaned_data['phone']
data.email = form.cleaned_data['email']
data.address_line_1 = form.cleaned_data['address_line_1']
data.address_line_2 = form.cleaned_data['address_line_2']
data.country = form.cleaned_data['country']
data.state = form.cleaned_data['state']
data.city = form.cleaned_data['city']
data.order_note = form.cleaned_data['order_note']
data.order_total = grand_total
data.tax =tax
data.ip = request.META.get('REMOTE_ADDR')
data.save()
return redirect('checkout')
else:
raise BadRequest() # Or do whatever makes sense to you
else:
return redirect('checkout')
推荐阅读
- php - PHP — 关于 zip:// 协议的信息
- c# - 如何通过 IIS 有效地将 GET 和 POST 捕获到 WinForms c#?
- android - 为什么当我尝试通过 USB 安装应用程序时出现错误,错误提示:未安装会话“应用程序”,我使用的是 android studio 3.5
- cloud-foundry - Redis 在 Swisscom AppCloud 中使用哪种持久性模式?
- php - 如何在codeigniter中不使用会话或javascript返回当前页面的上一个
- node.js - 在 npm start 上渲染 html
- html - 通过xml中的xsl参数执行html代码
- java - 使用服务主体和邮递员访问 power bi 组和报告
- ethereum - 我们可以从以太坊公共地址生成公钥吗?
- c# - 使用 Entity Framework Core 时我应该处置 DbContext