我在此博客中关注具体步骤。
还进行了更改:
1) the url template tag syntax as noted above by "F L"
2) uidb36 in the urls.py and email template both should be uidb64 per https://docs.djangoproject.com/en/1.6/releases/1.6/#django-contrib-auth-password-reset-uses-base-64-encoding-of-user-pk
输入电子邮件地址后,我收到了邮件,并输入了URL:http:// localhost:8000 / user / password / reset / NDI-47h-e1fbd1df48ce2aa05de4 /,我总是收到以下消息:
Password reset unsuccessful
The password reset link was invalid,
possibly because it has already been used.
Please request a new password reset.
即有效链接总是失败。为什么?
共享相关代码块:urls.py:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^user/password/reset/$',
'django.contrib.auth.views.password_reset',
{'post_reset_redirect' : '/user/password/reset/done/'}, name="password_reset"),
(r'^user/password/reset/done/$',
'django.contrib.auth.views.password_reset_done'),
(r'^user/password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)-(?P<token>.+)/$',
'django.contrib.auth.views.password_reset_confirm',
{'post_reset_redirect' : '/user/password/done/'}),
(r'^user/password/done/$',
'django.contrib.auth.views.password_reset_complete'),
在我的模板文件夹中,创建一个名为registration的文件夹:我的模板文件夹的结构:/ templates $ find
.
./registration
./registration/password_reset_form.html
./registration/password_reset_confirm.html
./registration/password_reset_email.html
./registration/password_reset_done.html
./registration/password_reset_complete.html
./admin
password_reset_email.html:
{% load i18n %}
{% comment %}
{% load url from future %}
{% endcomment %}
{% autoescape off %}
You're receiving this e-mail because you requested a password reset for your user account at {{ site_name }}.
Please go to the following page and choose a new password:
{% block reset_link %}
{{ 'http' }}://{{ 'localhost:8000' }}{% url 'django.contrib.auth.views.password_reset_confirm' uidb64=uid token=token %}
{% endblock %}
Your username, in case you've forgotten: {{ user.username }}
Thanks for using our site!
The {{ site_name }} team.
其他所有模板,如博客中一样
我猜想-
您的网址中的是一个问题,因为您的第一个正则表达式组-
贪婪地匹配。
注意,-
它与第一个正则表达式匹配,但是您也将其用作分隔符。
代替此URL模式:
r'^user/password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)-(?P<token>.+)/$'
试试这个:
r'^user/password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$'
区别在于我们-
将匹配组之间的in更改为/
,这是第一个组中不匹配的字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句