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

DRF SimpleRouter引入后URL模式含^符号引发404的问题

问题原因
  • 你在router.register()的路径参数中写了r"example/",末尾带了斜杠。DRF的SimpleRouter默认会自动为生成的URL添加尾部斜杠,再加上主路由path("app/", ...)里的尾部斜杠,两者叠加导致生成的URL规则出现双斜杠(比如app/ ^example//$),和实际访问的app/example/路径不匹配,因此返回404。
  • 另外代码里存在拼写错误:导入的是ExampleViewset,但注册时写的是ExampleViewSet(大小写不一致),这会导致运行报错,需要同步修正。
解决方法
  1. 修正子应用路由的注册路径:去掉router.register()路径参数末尾的斜杠,同时修正视图类的拼写:
# project/app/urls.py
from rest_framework.routers import SimpleRouter
from .viewsets import ExampleViewset, TopViewset
router = SimpleRouter()
# 移除路径末尾斜杠,修正视图类名称大小写
router.register(r"example", ExampleViewset, basename="example")
  1. 主路由配置保持不变:主urls.py里的path("app/", include(app_router.urls))无需修改,SimpleRouter会自动为生成的URL添加尾部斜杠,最终生成正确的app/example/和app/example/<pk>/路径规则。

修改完成后,访问localhost:8000/app/example/就能正常匹配到对应的视图集接口了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:45:46