反向未找到错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向未找到错误相关的知识,希望对你有一定的参考价值。

如果我有一个像这样的URL:

url(r'^reset/(?P<uid>w+)/(?P<token>w+)/$', 'django.contrib.auth.views.password_reset_confirm', name="reset_password")

和这样的URL标记:

{% url 'reset_password' uid=uid token=token %}

当我尝试呈现包含标记的页面时,为什么会出现此错误:

Reverse for 'reset_password' with arguments '()' and keyword arguments not found 

uid和token都是有效的字符串。

答案

我会说你的uid或你的令牌有一个非字母数字的字母,如“ - ”或“。”所以我会尝试将urls.py更改为:

url(r'^reset/(?P<uid>.+)/(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', name="reset_password")

我不喜欢使用。在正则表达式,但如果你没有其他选择......

另一答案

尝试以下方法:

1.总是尝试命名为'app_name:reset_password'的网址,只需添加

你的urls.py文件开头的app_name='your app name'如果你在html的名字同时发生冲突时在同一个项目中处理多个应用程序,这将有助于你将来

2.在您的网址中更改此更改,因为您正在使用django身份验证视图及其密码重置功能,您还需要在重置密码之后指定重定向网址

{'post_reset_redirect':'<app_name>:<url_name>'}

url(r'^reset/(?P<uid>[-w]+)/(?P<token>[-w]+)/$', 'django.contrib.auth.views.password_reset_confirm', {'post_reset_redirect':'<your redirection url after reset password'},name="reset_password")}

是的,请检查变量也像'uid',因为它是django自己的函数可能是它自己的变量名称所以尝试'uidb64'

以上是关于反向未找到错误的主要内容,如果未能解决你的问题,请参考以下文章

反向未找到错误

NoReverseMatch 错误。未找到“...”的反向

反向未找到错误

接收错误:使用参数“()”和未找到关键字参数反向

使用面临未找到反向问题的类基视图

Django 1.10.2 错误“NoReverseMatch at”,“未找到带有参数 '()' 和关键字参数 '' 的 'django.contrib.auth.views.login' 的反向。