You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django视图create_wish返回None错误:空输入时需返回带提示页面

解决Django视图返回None的问题

当搜索栏无输入时,表单验证失败,你的视图在POST请求分支里没有返回任何HttpResponse对象,导致系统抛出如下错误:

The view wish.views.create_wish didn't return an HttpResponse object. It returned None instead.

只需在表单验证失败的分支中添加提示信息,并确保所有分支都返回HttpResponse即可解决问题,修改后的代码如下:

from django.contrib import messages
from django.db.models import Q

def create_wish(request):
    if request.method == 'POST':
        form = WishForm(request.POST)

        if form.is_valid():
            wish = form.save(commit=False)
            wish.author = request.user
            wish.save()
            messages.success(request, "Your location that you want to visit has been added to List !")
        else:
            # 表单验证失败时添加错误提示
            messages.error(request, "please enter a place")
        
        # 统一处理数据查询和页面返回,确保POST请求必有返回
        my_items = Wish.objects.filter(author=request.user)
        all_items = Wish.objects.filter(~Q(author=request.user))
        return render(request, "wish/wish.html", {
            'all_items': all_items, 
            'my_items': my_items,
            'form': form  # 可选:传递表单到模板,可显示系统默认的字段验证错误
        })

    else:
        form = WishForm()
        my_items = Wish.objects.filter(author=request.user)
        all_items = Wish.objects.filter(~Q(author=request.user))
        return render(request, "wish/wish.html", {
            'all_items': all_items, 
            'my_items': my_items,
            'form': form
        })

修改说明

  1. 在form.is_valid()的else分支中,通过messages.error添加自定义提示信息
  2. 将POST请求中的数据查询和页面返回逻辑移到分支外部,确保无论表单是否验证通过,都会返回HttpResponse
  3. GET请求时初始化空表单并传递到模板,保持前后端交互的一致性
  4. 可选传递form到模板:Django会自动渲染表单的验证错误信息,和自定义提示配合使用效果更好

内容的提问来源于stack exchange,提问作者Mezarim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:15:54