首页 > 解决方案 > 从列表中向下移动后,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_posturl 向上移动(下面的代码)并尝试打开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 的概念。你能向我解释一下这个错误会发生什么吗?

标签: djangodjango-urlsslug

解决方案


推荐阅读