Django 2.0身份验证视图中重置完成和重置完成之间的区别

时间:2018-01-03 20:49:50

标签: python django django-authentication

我正在考虑为Django项目实现用户身份验证。我正在阅读documentation。它似乎很简单,但有一件事我不明白。

显然,身份验证包含八个视图:

accounts/login/ [name='login']
accounts/logout/ [name='logout']
accounts/password_change/ [name='password_change']
accounts/password_change/done/ [name='password_change_done']
accounts/password_reset/ [name='password_reset']
accounts/password_reset/done/ [name='password_reset_done']
accounts/reset/<uidb64>/<token>/ [name='password_reset_confirm']
accounts/reset/done/ [name='password_reset_complete']

当实施密码重置时,我假设我想要做的是实现accounts/password_reset/,它会向用户转发电子邮件。然后,我需要实现accounts/reset/<uidb64>/<token>/,这是用户通过电子邮件定向的地方。我不清楚的是当用户成功更新密码时应该做什么。

accounts/reset/done/(或password_resest_complete)和accounts/password_reset/done/(或password_reset_done)之间的区别是什么?

2 个答案:

答案 0 :(得分:4)

cable1在发送电子邮件时显示成功消息(在password_reset_done中输入电子邮件后)。成功更改密码后,password_reset会显示成功消息。

如果您查看这些视图的source code,则会有一条评论说明该过程。第237-242行:

password_reset_complete

答案 1 :(得分:1)

好问题。这就是它们的样子:

class PasswordResetCompleteView(PasswordContextMixin, TemplateView):
    template_name = 'registration/password_reset_complete.html'
    title = _('Password reset complete')

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['login_url'] = resolve_url(settings.LOGIN_URL)
    return context

class PasswordResetDoneView(PasswordContextMixin, TemplateView):
    template_name = 'registration/password_reset_done.html'
    title = _('Password reset sent')

主要区别在于PasswordResetCompleteViewLOGIN_URL传递给您的模板上下文。