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

Django项目添加CreateView触发PostDetailView 404错误求助

解决Django PostCreateView访问404的问题

这个问题的根源很明确:URL路由的匹配顺序搞反了。

Django在匹配URL时是从上到下依次检查规则的,你把动态slug路由path('<slug:slug>/', ...)放在了new_design/路由的前面。当你访问/score/new_design/时,Django会直接把new_design当作一个slug参数,交给PostDetailView处理——但数据库里根本没有slug为new_design的Post对象,所以触发了404错误。

修正方案:调整路由顺序

把更具体的new_design/路由移到动态slug路由的前面,让Django优先匹配创建视图的规则:

urlpatterns = [
    path('', PostListView.as_view(), name='score'),
    path('new_design/', PostCreateView.as_view(), name='post-create'),  # 移到动态路由前
    path('<slug:slug>/', PostDetailView.as_view(), name='post-detail'),
]

额外验证小提示

  1. 确认你的Post模型中存在slug字段,或者在PostDetailView里明确指定了slug对应的字段(比如用title作为slug来源):
    class PostDetailView(DetailView):
        model = Post
        slug_field = 'title'  # 如果slug对应title字段的话
        slug_url_kwarg = 'slug'
    
  2. 模板里的{% url 'score:post-create' %}标签是正确的,只要你的app名称确实是score就没问题。

调整完路由顺序后,再访问/score/new_design/应该就能正常进入创建视图了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:08:49