Django没有返回一个HttpResponse对象

时间:2013-03-05 06:27:15

标签: django

我制作了一个简单的宠物商店应用程序,只是添加了搜索框功能,我收到了此错误

ValueError at /pet/search/
The view mysite.pet.views.search_page didn't return an HttpResponse object.

我尝试将render_to_response更改为HttpResponseRedirect但仍然遇到同样的错误。

在视图中链接回我的search_page函数。

def search_page(request):
    form = SearchForm()
    if request.method == "POST":
        f = SearchForm(request.POST)
        if f.is_valid():
            Pets = Pet.objects.filter(animal = f.cleaned_data["text"])
            return HttpResponseRedirect("search.html",{"Pets":Pets},{"form":form})
        else:
            return render_to_response("search.html",{"form":form} , context_instance = RequestContext(request))

我做了一些研究,我理解一个视图必须在发出HttpRequest时返回一个HttpResponse,而render_to_response只是一个快捷方式。有人帮助解释为什么这个函数不起作用。谢谢你

2 个答案:

答案 0 :(得分:7)

您遇到此问题是因为如果请求类型不是HttpResponse object

,您就没有写POST

要在你的视图中克服这个问题,写下如果请求类型不是帖子将会处理的内容

def search_page(request):
    form = SearchForm()
    if request.method == "POST":
        f = SearchForm(request.POST)
        if f.is_valid():
            Pets = Pet.objects.filter(animal = f.cleaned_data["text"])
            return HttpResponseRedirect("search.html",{"Pets":Pets},{"form":form})



    return render_to_response("search.html",{"form":form} , context_instance = RequestContext(request))

希望这会对你有所帮助

答案 1 :(得分:1)

错误是因为在调用函数时,方法类型不是POST,并且找不到相应的HttpResponse对象。

def search_page(request):
    form = SearchForm()
    if request.method == "POST":
        f = SearchForm(request.POST)
        if f.is_valid():
            Pets = Pet.objects.filter(animal = f.cleaned_data["text"])
            return HttpResponseRedirect("search.html",{"Pets":Pets},{"form":form})
        else:
            return render_to_response("search.html",{"form":form} , context_instance = RequestContext(request))

    return render_to_response("any.html",{} , context_instance = RequestContext(request))