我做了一个简单的宠物商店应用程序,刚刚添加了搜索框功能,我收到了这个错误
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/