我制作了一个简单的宠物商店应用程序,只是添加了搜索框功能,我收到了此错误
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只是一个快捷方式。有人帮助解释为什么这个函数不起作用。谢谢你
答案 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))