[英]The view didn't return an HttpResponse object
這是我得到的錯誤:視圖myapp.views.view_page沒有返回HttpResponse對象
誰能看到我在這里做錯了什么? 我似乎無法弄清楚為什么我會收到該異常,因為我正在返回一個HttpResponseRedirect。
views.py
from myapp.models import Page
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.template import Template, RequestContext
from django.core.context_processors import csrf
def view_page(request, page_name):
try:
page = Page.objects.get(pk=page_name)
except Page.DoesNotExist:
return render_to_response("create.html", {"page_name" :page_name},context_instance=RequestContext(request))
content=page.content
return render_to_response("view.html", {"page_name" :page_name , "content" :content},context_instance=RequestContext(request))
def edit_page(request, page_name):
try:
page = Page.objects.get(pk=page_name)
content=page.content
except Page.DoesNotExist:
content = ""
return render_to_response("edit.html", {"page_name" :page_name, "content" :content},context_instance=RequestContext(request))
def save_page(request, page_name):
content = request.POST["content"]
try:
page = Page.objects.get(pk=page_name)
page.content=content
except Page.DoesNotExist:
page = Page(name=page_name, content=content)
page.save()
return HttpResponseRedirect("/myproject/" + page_name + "/")
你有一個沒有返回任何東西的執行路徑 - 當沒有引發異常時。 你所擁有的縮進是將兩個return語句放在except塊中; 實際上從不執行第二次回報:
from django.shortcuts import render
def view_page(request, page_name):
try:
page = Page.objects.get(pk=page_name)
except Page.DoesNotExist:
return render(request,"create.html",{"page_name" :page_name})
content=page.content
return render(request,"view.html",{"page_name":page_name,"content":content})
您還需要對其他方法執行相同的操作:
def edit_page(request, page_name):
try:
page = Page.objects.get(pk=page_name)
content=page.content
except Page.DoesNotExist:
content = ""
return render(request,"edit.html", {"page_name":page_name,"content":content})
def save_page(request, page_name):
content = request.POST["content"]
page,_ = Page.objects.get_or_create(pk=page_name)
page.content = content
page.save()
return HttpResponseRedirect("/myproject/" + page_name + "/")
我正在使用自動包含RequestContext
的render
快捷方式 。
你的縮進是完全錯誤的。 我不知道您是否已經解決了問題,但正如我在您提出的一分鍾后在第一條評論中所說,您應該執行以下操作:
try
條款中返回了一些內容? except
子句中返回了一些內容? 如果仔細查看代碼,你會發現它嗎? :)
您的view_page函數用於查看
def view_page(request, page_name):
try:
page = Page.objects.get(pk=page_name)
content=page.content
except Page.DoesNotExist:
content=None
return render_to_response("view.html",{"page_name": page_name,
"content": content},
context_instance=RequestContext(request))
類似地,編輯和保存方法是
def edit_page(request, page_name):
try:
page = Page.objects.get(pk=page_name)
content=page.content
except Page.DoesNotExist:
content = ""
return render_to_response("edit.html", {"page_name": page_name,
"content": content},
context_instance=RequestContext(request))
def save_page(request, page_name):
content = request.POST["content"]
try:
page = Page.objects.get(pk=page_name)
page.content=content
except Page.DoesNotExist:
page = Page(name=page_name, content=content)
page.save()
return HttpResponseRedirect("/myproject/" + page_name + "/")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.