Django已导入pk仍出现No ReverseMatch错误如何解决?
Django No ReverseMatch 错误原因与修复方案
错误原因
- 反向解析
profile_page路由时未传递必传路径参数:你的路由配置明确要求该路由必须接收一个名为pro的字符串类型参数,只要调用reverse函数或者模板{% url %}标签时没有传入该参数,就会触发该报错。 - 你提到已经完成pk导入仍报错,大概率是参数名不匹配:你传递的参数名是
pk,但路由定义要求的参数名是pro,Django无法完成参数匹配,同样会触发该错误。
修复方法
- 模板层调用修复:将原有的
{% url 'profile_page' %}修改为匹配参数名的写法,示例如下:<!-- 传用户pk作为pro参数 --> {% url 'profile_page' pro=user.pk %} <!-- 传用户名作为pro参数可替换为对应值 --> {% url 'profile_page' pro=user.username %} - 视图层调用修复:使用
reverse函数时传入对应参数,两种传参方式均可:# kwargs传参(更直观,不易出错) reverse('profile_page', kwargs={"pro": request.user.pk}) # args传参 reverse('profile_page', args=[request.user.pk]) - 若业务中该参数确实为可选,可补充无参数的路由配置:
path('profile_page/<str:pro>', UserProfileView, name='profile_page'), path('profile_page/', UserProfileView, name='profile_page'), # 同时需要给视图函数的pro参数设置默认值:def UserProfileView(request, pro=None):
内容的提问来源于stack exchange,提问作者Kaushik
相关产品推荐
相关产品推荐

