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

Django访问带查询参数的personalities接口报404,urls.py路径不匹配如何解决

问题原因

你的404报错是路由匹配规则和访问地址不匹配导致的,核心是混淆了路径参数和查询参数的用法:

  • 你通过re_path('(?P<fio>.+)/$', ...)定义的是路径参数规则,要求/api/v1/personalities/之后必须跟非空的路径片段(比如/api/v1/personalities/ti/)才能匹配成功
  • Django路由匹配只会判断?之前的路径部分,不会把?后的查询参数纳入匹配逻辑。你访问的地址http://127.0.0.1:8000/api/v1/personalities/?fio=ti的路径部分到personalities/就结束了,没有后续路径片段匹配子路由规则,自然触发404。

另外你对DRF过滤的用法有误解:DRF的django_filters过滤默认读取的是?后的查询参数,根本不需要在路由层定义参数匹配规则。

解决方案

根据你的使用需求二选一即可:

方案1:沿用查询参数传参(符合DRF过滤的标准用法)

直接修改personalities.urls.py的配置,删除多余的路径参数规则:

path('', PersonalitiesFilterView.as_view())

后续直接在视图层配置django_filters的过滤字段,即可正常读取?fio=ti的参数值完成过滤。

方案2:保留路径参数规则

调整你的访问地址,把fio参数值放到路径部分:
http://127.0.0.1:8000/api/v1/personalities/ti/


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 18:12:01