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

问题描述 投票:0回答:1

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

views.朋友

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)

位置/ 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时,我得到一个Page Not Found 404 Error。但是,对于任何其他id,页面加载就好了。有关为什么模型中的第一个ID给出404错误的任何想法?

编辑1:回溯错误

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

admin / [name ='home'] apply / application / apply / apply / [name ='detail']当前路径apply / 1 /与其中任何一个都不匹配。

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

django django-views django-urls
1个回答
1
投票

Django get_object_or_404的作用如下。

get_object_or_404(klass, *args, **kwargs)

在给定的模型管理器上调用get(),但它引发了Http404而不是模型的DoesNotExist异常。在您的情况下,您的URL路径未正确配置。尝试对此进行更改:

path('/<int:id>/', position_detail_view, name='detail')
© www.soinside.com 2019 - 2024. All rights reserved.