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

Django传递字符串参数到URL时出现NoReverseMatch错误如何解决

问题根因
  • 核心触发点是你将URL路径参数命名为了filter,这是Django模板系统的内置保留关键字,解析{% url %}模板标签时会和内置关键字发生冲突,导致路由名称解析异常,最终抛出找不到空字符串对应路由的NoReverseMatch错误。
  • 次要排查方向:如果你的子应用app中配置了app_name路由命名空间,调用{% url %}时未加命名空间前缀也会触发匹配错误,不过结合你给出的错误提示,参数名冲突的概率更高。
修复步骤
  1. 修改子应用路由配置,替换参数名为非保留关键字,比如filter_type:
urlpatterns = [
    path('dashboard/<str:filter_type>/', views.dashboard, name='dashboard'),
]
  1. 同步修改视图函数的入参名称,和路由参数保持一致:
@login_required
def dashboard(request, filter_type):
    data = []
    context = {
        'title': 'Dashboard',
        'records': data,
    }
    return render(request, 'app/common/dashboard.html', context)
  1. 如果你的子应用配置了app_name(比如在app/urls.py顶部加了app_name = 'app'),需要同步修改模板中的路由调用写法,加上命名空间前缀:
href="{% url 'app:dashboard' 'create_time' %}"

如果没有配置命名空间,原来的模板写法不需要修改即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:15:04