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

Django配置带slug的update-recipe路由返回404是遗漏了什么配置吗?

Django路由404问题排查方案
  • 优先检查路由匹配顺序
    Django的路由规则是从上到下依次匹配,匹配到第一个符合规则的路径就会终止匹配。如果你的path('<slug:recipe_slug>/', xxx)这类宽泛路由定义在update-recipe/<slug:recipe_slug>/的上方,那么访问update-recipe/xxx/时,update-recipe会被识别为slug参数的值,被前面的短路径路由优先拦截,最终触发404。
    正确的路由配置顺序示例:
    urlpatterns = [
        # 具体路由放在最前
        path('update-recipe/<slug:recipe_slug>/', views.update_recipe, name='update_recipe'),
        # 宽泛的slug路由放在后方
        path('<slug:recipe_slug>/', views.recipe_detail, name='recipe_detail'),
    ]
    
  • 检查根路由的前缀配置
    如果你是在应用(app)的urls.py中配置的路由,需要确认项目根目录下的urls.py中include该应用路由时是否添加了额外前缀,比如根路由配置为path('recipes/', include('recipes.urls')),那么你的目标访问路径应该是/recipes/update-recipe/xxx/,直接访问/update-recipe/xxx/就会返回404。而你修改为短路径后访问/recipes/xxx/符合路由规则,所以能正常运行。
  • 检查访问路径的末尾斜杠
    Django默认开启APPEND_SLASH配置,如果你访问时没有加末尾的斜杠(比如访问/update-recipe/xxx而非/update-recipe/xxx/),会自动重定向到带斜杠的路径。如果你手动关闭了该配置,不加斜杠就会直接返回404。
  • 验证slug参数的合法性
    Django的slug类型转换器默认只匹配ASCII字母、数字、连字符-和下划线_,如果你传入的参数包含中文、特殊符号等不符合规则的内容,会匹配失败返回404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:27:01