我想使用Django的内置密码重置 . 我的urls.py如下 .
app_name = 'recruiter'
urlpatterns= [
#urls
]
urlpatterns += [
url(r'^password_reset_done/$', password_reset_done, name='password_reset_done'),
url(r'^password_reset/$', password_reset, name='password_reset'),
url(r'^password_reset_confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>,+)/$', password_reset_confirm, name='password_reset_confirm'),
url(r'^password_reset_complete/$', password_reset_complete, name='password_reset_complete'),
]
如果我这样做,那么它就会在这一内置函数中出错 .
reverse('password_reset')
如果我删除 app_name = 'recruiter'
然后它工作正常,但其他应用程序功能删除了命名空间 . 我该如何解决这个问题?
此外,如果我删除 app_name = 'recruiter'
并尝试重置密码,然后在提交电子邮件后,我在此行上收到错误 .
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
错误就像:
NoReverseMatch at /recruiter/password_reset/
Reverse for 'password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb64': 'Mw', u'token': u'4fd-f1aeba7ed3a5410a30da'}' not found. 1 pattern(s) tried: ['recruiter/password_reset_confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>,+)/$']
2 回答
使用调用中的命名空间进行反向 .
或者将密码重置URL移动到没有命名空间的单独urls.py .
您可以在您的网址中传递
post_reset_redirect
和email_template_name
作为参数:现在它将重定向到
recruiter:password_reset_done
,您可以在recruiter/templates/recruiter/password_reset_email.html
中使用自己的电子邮件模板,并为password_reset_confirm
指定正确的名称空间:请注意,您还可以将
template_name
传递给URL以使用您自己的密码重置模板: