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

Django中Reverse for 'detail'匹配失败报错求助

解决NoReverseMatch错误的方案

问题根源

你用的URL正则page/(?P<key>[^/]+)\Z里,[^/]+是只匹配不含斜杠的字符,但你要传递的key是2022/11/29/oddballers-29112022,包含多个斜杠,完全不符合正则的匹配规则,所以反向解析时找不到对应的detail路由。

两种解决办法

  • 方法一:修改URL规则,允许key包含斜杠
    用Django自带的path转换器<path:key>,它会匹配包含斜杠的任意字符串,替换原来的正则写法:

    # urls.py
    path('page/<path:key>/', views.detail, name='detail')
    

    如果是用re_path(旧的url函数),可以把正则改成允许匹配斜杠:

    re_path(r'^page/(?P<key>.+)/$', views.detail, name='detail')
    

    注意:如果你的URL配置里还有其他以page/开头的路由,要把这个规则放在最下面,避免匹配冲突。

  • 方法二:修改key的格式,移除斜杠
    把key里的斜杠替换成其他不冲突的字符,比如连字符或下划线,比如将2022/11/29/oddballers-29112022改成2022-11-29-oddballers-29112022,这样原来的[^/]+正则就能正常匹配,反向解析也不会报错。

额外提醒

如果用方法一,要确保视图函数里处理key的逻辑能正确解析带斜杠的内容,比如拆分日期部分和文章slug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:45:34