django - 从列表中向下移动后,Django url 无法工作
问题描述
我正在使用 Django 制作博客应用程序。在我的博客应用程序中,我有 6 条路径。这是我的应用urls.py
from . import views
from .views import AddPostView
from django.urls import path
from .feeds import LatestPostsFeed
urlpatterns = [
path('', views.PostList.as_view(), name='home'),
# path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
path('upload/', views.image_upload_view, name="upload"),
path('add_post/', AddPostView.as_view(), name='add_post'),
path('<slug:slug>/', views.post_detail, name='post_detail'),
path("feed/rss", LatestPostsFeed(), name="post_feed"),
]
该应用程序运行良好,但每当我尝试path('<slug:slug>/', views.post_detail, name='post_detail')
从add_post
url 向上移动(下面的代码)并尝试打开add_post
from . import views
from .views import AddPostView
from django.urls import path
from .feeds import LatestPostsFeed
urlpatterns = [
path('', views.PostList.as_view(), name='home'),
# path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
path('upload/', views.image_upload_view, name="upload"),
path('<slug:slug>/', views.post_detail, name='post_detail'),
path('add_post/', AddPostView.as_view(), name='add_post'),
path("feed/rss", LatestPostsFeed(), name="post_feed"),
]
突然我有一个错误说:
找不到页面 (404)
没有帖子与给定的查询匹配。
请求方式:GET 请求地址:http://localhost:8000/add_post/ 发起者:blog.views.post_detail
使用 mysite.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:
admin/ [name='home'] upload/ [name='upload'] <slug:slug>/ [name='post_detail']
当前路径 add_post/ 与最后一个匹配。
您看到此错误是因为您的 Django 设置文件中有 DEBUG = True 。将其更改为 False,Django 将显示标准 404 页面。
我不明白为什么会这样,我很好奇,想知道刚刚发生了什么。也许有一些我不知道的关于 django url 的概念。你能向我解释一下这个错误会发生什么吗?