在 Django 中提高 Http404
Raising Http404 in Django
我有以下路径:
path("polls/<int:week_id>/vote/", views.vote, name="vote")
而在我看来,我写了下面的方法:
def vote(request, week_id):
week = Week.objects.get(pk=week_id)
try:
selected_choice = week.choice_set.get(pk=request.POST["choice"])
except Week.DoesNotExist:
raise Http404("Poll for said week does not exists")
else:
selected_choice.votes += 1
selected_choice.save()
return redirect("results", week_id)
我正在尝试在用户导航到 polls/123/vote
时显示一个 404
页面,其中 123
是数据库中不存在的一周。出于某种原因,上面的代码 returns 出现了 DoesNotExist
错误,而不是实际的 404
页面。我假设我正在提升 404
页面的那行代码没有被点击。是吗?
您需要将 week
向下移动到 try 块中:
def vote(request, week_id):
try:
week = Week.objects.get(pk=week_id)
selected_choice = week.choice_set.get(pk=request.POST["choice"])
except Week.DoesNotExist:
raise Http404("Poll for said week does not exists")
else:
selected_choice.votes += 1
selected_choice.save()
return redirect("results", week_id)
我有以下路径:
path("polls/<int:week_id>/vote/", views.vote, name="vote")
而在我看来,我写了下面的方法:
def vote(request, week_id):
week = Week.objects.get(pk=week_id)
try:
selected_choice = week.choice_set.get(pk=request.POST["choice"])
except Week.DoesNotExist:
raise Http404("Poll for said week does not exists")
else:
selected_choice.votes += 1
selected_choice.save()
return redirect("results", week_id)
我正在尝试在用户导航到 polls/123/vote
时显示一个 404
页面,其中 123
是数据库中不存在的一周。出于某种原因,上面的代码 returns 出现了 DoesNotExist
错误,而不是实际的 404
页面。我假设我正在提升 404
页面的那行代码没有被点击。是吗?
您需要将 week
向下移动到 try 块中:
def vote(request, week_id):
try:
week = Week.objects.get(pk=week_id)
selected_choice = week.choice_set.get(pk=request.POST["choice"])
except Week.DoesNotExist:
raise Http404("Poll for said week does not exists")
else:
selected_choice.votes += 1
selected_choice.save()
return redirect("results", week_id)