You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django新增add_post页面访问报404错误问题求助

问题根源

404错误由URL路由匹配顺序错误导致。
Django的urlpatterns按从上到下的顺序逐行匹配,命中第一条符合规则的路由就会终止匹配流程,不会执行后续路由。你当前的路由配置中,动态文章详情路由path('<slug:slug>/', PostDetail.as_view(), name='post_detail')写在了add_post/路由的前面,访问/add_post/时,Django会先把add_post识别为文章slug参数传给PostDetail视图,视图找不到slug为add_post的文章记录就会返回404,后续的AddPost路由完全不会被触发。

修复方案

调整urlpatterns内的路由顺序,所有固定路径的路由都要放在宽泛的动态匹配路由前面,修改后的urls.py代码如下:

from .views import AddPost, PostList, PostDetail, PostLike
from django.urls import path


urlpatterns = [
    path('', PostList.as_view(), name='home'),
    # 固定路径路由前置
    path('add_post/', AddPost.as_view(), name='create_post'),
    path('like/<slug:slug>/', PostLike.as_view(), name='post_like'),
    # 通配类动态路由放在最后
    path('<slug:slug>/', PostDetail.as_view(), name='post_detail'),
]
补充校验项

如果调整顺序后仍无法正常访问,逐一核对以下配置:

  • 确认当前app的urls.py已经在项目根路由文件中通过include()正确注册,根路由需存在类似path('', include('你的blog应用名.urls'))的配置
  • 确认add_post.html模板文件存放在app的templates目录下,或在项目TEMPLATES配置指定的扫描路径内
  • 确认访问路径拼写正确,本地开发环境下的正确地址格式为http://127.0.0.1:8000/add_post/

注意:你使用的CreateView在表单校验通过、文章保存成功后,默认会调用Post模型的get_absolute_url()方法执行跳转,记得给Post模型补上该方法,否则文章提交成功后会抛出「No URL to redirect to」类的错误。

内容的提问来源于stack exchange,提问作者Jord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:18:53