第 404 页取决于它在"urlpatterns"中的位置 - 为什么?



所以我正在尝试呈现具有泛型的页面"提交"。正确配置的创建视图。此 URL 模式呈现良好:

from django.contrib import admin
from django.urls import include, path
from curate import views
urlpatterns = [
    path('', views.SetListView.as_view(), name='set_list'),
    path('new/', views.ItemListView.as_view(), name='new_list'),
    path('<int:pk>/edit', views.ItemEditView.as_view(), name='item_edit'),
    path('<int:pk>/delete', views.ItemDeleteView.as_view(), name='item_delete'),
    path('submit/', views.SubmitItem.as_view(), name='submit_item'),
    path('<slug>/', views.ItemDetailView.as_view(), name='item_detail'),
    path('<int:pk>/', views.ItemDeleteView.as_view(), name='item_detailPK'),
    path('<slug>/', views.SetDetailView.as_view(), name='set_detail'),
]

但是出于某种原因,如果提交视图位于列表中的其他位置,即如下所示,例如在 ItemDetailView.as_view(( url 下方,则它不会呈现,它只是 404。

from django.contrib import admin
from django.urls import include, path
from curate import views
urlpatterns = [
    path('', views.SetListView.as_view(), name='set_list'),
    path('new/', views.ItemListView.as_view(), name='new_list'),
    path('<int:pk>/edit', views.ItemEditView.as_view(), name='item_edit'),
    path('<int:pk>/delete', views.ItemDeleteView.as_view(), name='item_delete'),
    path('<slug>/', views.ItemDetailView.as_view(), name='item_detail'),
    path('submit/', views.SubmitItem.as_view(), name='submit_item'),
    path('<int:pk>/', views.ItemDeleteView.as_view(), name='item_detailPK'),
    path('<slug>/', views.SetDetailView.as_view(), name='set_detail'),
]

奇怪的是,ItemDetailView渲染良好 - 这为我页面上的所有项目提供支持?

path('<slug>/', views.ItemDetailView.as_view(), name='item_detail'),
path('submit/', views.SubmitItem.as_view(), name='submit_item'),

item_detail高于submit_item时,对/submit/的请求与'<slug>/'匹配,因此请求由ItemDetailView处理。

您没有带有slug="submit"的项目,因此给出了 404。

Django URL 解析器使用匹配的第一个 URL 模式。如果第一个匹配项返回 404,它不会尝试其他 URL 模式。

submit_item高于item_detail时,SubmitItem视图会正确处理/submit/请求。

这是因为网址模式 - <slug>/ .如果这个模式高于submit,那么 django 会尝试找到slug=submit。由于数据库中不存在,因此您会得到404。

相关内容

  • 没有找到相关文章

最新更新