解决Django视图未返回HttpResponse对象而是返回None的报错问题
Django视图返回None异常解决方案
问题根因
报错的核心原因是代码逻辑存在分支未返回HttpResponse对象:
- 当请求为POST类型 且表单校验不通过 时,
form.is_valid()返回False,该分支下没有任何return语句,函数最终默认返回None,触发Django规则校验报错。
修复方案
需要给POST请求下表单校验失败的分支补充返回逻辑,你可以根据业务需求选择返回表单页带错误提示,或者直接重定向到指定页面,参考修改后的代码如下:
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') # 新增表单校验失败分支的返回逻辑,示例为返回原提交页并携带错误信息 return render(request, '你的订单提交页模板路径.html', {'form': form}) # 若不需要错误提示,也可以直接写 return redirect('checkout') else: return redirect('checkout')
内容的提问来源于stack exchange,提问作者Jesee Kiigu
相关产品推荐
相关产品推荐

