3

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

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 只是一个快捷方式。有人可以帮助解释为什么这个函数不起作用。谢谢

4

2 回答 2

7

您遇到此问题是因为您没有编写HttpResponse object if 请求类型不是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))

希望这会帮助你谢谢

于 2013-03-05T06:31:52.503 回答
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))
于 2013-03-05T07:37:18.390 回答