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

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

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

在 View 中链接回我的 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))

我做了一些研究,我明白一个 View 必须在 HttpRequest 产生时返回一个 HttpResponse 并且 render_to_response 只是一个快捷方式。有人可以帮助解释为什么这个功能不起作用。谢谢

最佳答案

您遇到此问题是因为如果请求类型不是 HttpResponse object,您还没有编写 POST
要在您的 View 中克服此问题,请编写一些内容,如果未发布请求类型,它将处理

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))

希望这会帮助你谢谢

关于Django 没有返回 HttpResponse 对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15217193/

10-11 08:54