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

Django添加context触发NoReverseMatch错误该如何排查解决?

问题原因

你的报错属于Django路由反向解析匹配失败,核心原因有两个:

  1. 路由定义和视图函数参数不匹配:viewPhoto视图函数要求传入pk参数,但你在urls.py中定义name="photo"的路由时,没有预留接收pk参数的位置,所以模板中调用{% url 'photo' 照片id %}传递参数时,找不到能匹配的路由规则。
  2. 你提到加context就崩溃的逻辑是:没有传context时,模板无法获取到photos列表数据,不会渲染每个照片的跳转链接,也就不会触发路由反向解析逻辑;传入context后模板开始遍历照片列表生成跳转链接,反向解析失败的问题就暴露出来了。
解决方案

修改你的app下urls.py的路由规则即可,推荐使用Django 3.2+更推荐的path写法,修改后完整urlpatterns如下:

from django.urls import path
from . import views

urlpatterns = [
    path('gallery/', views.photogallery, name="gallery"),
    # 新增int类型pk参数匹配,对应视图的pk入参
    path('photo/<int:pk>/', views.viewPhoto, name="photo"),
    path('add/', views.addPhoto, name="add"),
]

如果你坚持使用url(本质是正则匹配的re_path)写法,修改photo路由为如下格式即可:

url(r'^photo/(?P<pk>\d+)/$', views.viewPhoto, name="photo")

修改后重启服务即可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:27:02