为什么当我访问http://127.0.0.1:8000/project/1/时发生错误,提示DoesNotExist和 当我尝试http://127.0.0.1:8000/project/2/时,它没有任何错误。我认为问题出在urls.py或views.py
我的网址代码:
`
urlpatterns =[
url(r'^$', views.firstindex, name='firstindex'),
url(r'^(?P<pk>[0-9]+)/',views.project_detail, name='project_detail'),]
这是view.py
`def project_detail(request,pk):
project=Project.objects.get(pk=pk)
context={
'project':project
}
return render(request,'project/detail.html')
。
答案 0 :(得分:3)
我认为问题出在
urls.py
或views.py
没有逻辑错误。 Model.objects.get(..)
将引发错误(1)找不到给定过滤器的任何记录;或(2)可以找到给定错误的多个记录。 DoesNotExist
因此表示它找不到具有该主键的Project
。如果查看数据库,您可能会发现Project
中没有id=1
。
在找不到此类项目的情况下,您可以使用get_object_or_404(..)
function [Django-doc]返回HTTP 404,例如:
from django.shortcuts import get_object_or_404
def project_detail(request, pk):
project = get_object_or_404(Project, pk=pk)
context = {
'project': project
}
return render(request, 'project/detail.html', context)
请注意,您忘记将context
传递给render
通话。