【问题标题】:Customizing Django's contrib.auth views for password reset自定义 Django 的 contrib.auth 视图以重置密码
【发布时间】:2021-08-03 23:48:03
【问题描述】:

从 Django 3.0 开始,django.contrib.auth 视图是基于类的视图。因此,在网站上开发密码重置时,您必须导入类似


from django.contrib.auth import views as av

av.PasswordResetDoneView.as_view(template_name="accounts/password_reset_sent.html")

但是,我想向我的网站添加一些自定义功能,例如在用户重置密码后发送电子邮件。我可以在哪里添加我的自定义函数以及如何添加?

注意:我已经为我的站点配置了一个 SMTP,并且我还使用我的自定义模板设置了密码重置。

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    您应该尝试扩展PasswordResetCompleteView 视图并覆盖get 方法以在其中发送电子邮件:

    class CustomPasswordResetCompleteView(PasswordResetCompleteView):
            def get(self, request, *args, **kwargs):
                # Send the email here... #
                super().get(request, *args, **kwargs)
    

    【讨论】:

      【解决方案2】:

      如果您从PasswordResetDoneView 扩展一个类,则可以这样做:

      class MyPasswordResetDone(av.PasswordResetDoneView):
          def get(self, request, *args, ***kwargs):
              context = self.get_context_data(**kwargs)
              # Then you can do whatever you want in here.
              return self.render_to_response(context)
      

      我不确定执行此操作的最佳位置是在这里还是PasswordResetView,其中包含所有上下文以及执行操作的用户的电子邮件。

      请注意,在此视图中,您根本没有上下文中的电子邮件。那么如果你想在这个视图中看到用户的电子邮件,你必须稍微改变一下我之前提到的PasswordResetView

      【讨论】:

        猜你喜欢
        • 2019-01-16
        • 2018-07-28
        • 2015-12-12
        • 2013-12-16
        • 2018-04-07
        • 2015-08-10
        • 1970-01-01
        • 2020-04-16
        • 1970-01-01
        相关资源
        最近更新 更多