反向未找到错误

时间:2013-12-19 20:24:45

标签: python django django-templates django-urls django-1.5

如果我有这样的网址:

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

和这样的网址标记:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

尝试以下方法:

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")}

是的,请检查变量,例如&#39; uid&#39;因为django自己的功能可能是它自己的变量名,所以试试&#39; uidb64&#39;