Django-细节视图URL中的模型ID,第一个ID不起作用

时间:2019-03-14 16:24:18

标签: django django-views django-urls

我有一个模型Position,我创建了一个详细视图以查看每个单独的位置。

views.py

def position_detail_view(request, id=None):

    position = get_object_or_404(Position, id=id)

    context= {
        'object': position,
    }

    return render(request, 'positions/position_detail.html', context)

positions / urls.py

from django.urls import path, include
from .views import position_list_view, position_detail_view

urlpatterns = [
    path('', position_list_view),
    path('<int:id>', position_detail_view, name='detail')
]

当我进入http://localhost:8000/apply/1/(id = 1)时,出现页面未找到404错误。但是,使用其他任何ID,页面加载就可以了。关于为什么模型中的第一个id给出404错误的任何想法?

  

编辑1:回溯错误

     

找不到页面(404)请求方法:GET请求   URL:http://localhost:8000/apply/1/使用在   bta_website.urls,Django按以下顺序尝试了以下URL模式:

     

admin / [name ='home']申请/申请/申请/申请/   [name ='detail']当前路径apply / 1 /与任何这些都不匹配。

     

您看到此错误,因为您的Django中的DEBUG = True   设置文件。将其更改为False,Django将显示一个   标准404页面。

1 个答案:

答案 0 :(得分:1)

Django get_object_or_404的工作方式如下。

get_object_or_404(klass, *args, **kwargs)

在给定的模型管理器上调用get(),但它引发Http404而不是模型的DidNotExist异常。 就你而言 您的URL路径配置不正确。 尝试进行以下更改:

path('/<int:id>/', position_detail_view, name='detail')