如何创建管理命令以通过电子邮件发送密码重置?

问题描述

使用 django-oauth-toolkit,我必须创建一个管理命令,将密码重置电子邮件发送到电子邮件地址。该电子邮件将包含一个 html 模板,并允许用户更改其密码。

我可以看到视图有这个逻辑,而是提供了一个模板来输入电子邮件地址。我需要模仿这个视图,并创建一个命令来完成它。

password_reset url 返回此视图和表单。

class PasswordResetView(PasswordContextMixin,FormView):
  email_template_name = "registration/password_reset_email.html"
  extra_email_context = None
  form_class = PasswordResetForm
  from_email = None
  html_email_template_name = None
  subject_template_name = "registration/password_reset_subject.txt"
  success_url = reverse_lazy("password_reset_done")
  template_name = "registration/password_reset_form.html"
  title = _("Password reset")
  token_generator = default_token_generator

@method_decorator(csrf_protect)
  def dispatch(self,*args,**kwargs):
      return super().dispatch(*args,**kwargs)

  def form_valid(self,form):
      opts = {
          "use_https": self.request.is_secure(),"token_generator": self.token_generator,"from_email": self.from_email,"email_template_name": self.email_template_name,"subject_template_name": self.subject_template_name,"request": self.request,"html_email_template_name": self.html_email_template_name,"extra_email_context": self.extra_email_context,}
      form.save(**opts)
      return super().form_valid(form)

我不需要表单位,我需要发送电子邮件

class Command(BaseCommand):
  def add_arguments(self,parser):
      parser.add_argument("email",type=str)

  def handle(self,**options):
   // call logic for email in here ?? but how

下面的方法似乎也很重要。但是管理命令在处理 http 方法和请求对象的视图的上下文之外。

@method_decorator(csrf_protect)
  def dispatch(self,**kwargs)

如何做与 PasswordResetView 相同但没有表单和作为管理命令的事情?

非常欢迎任何建议!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...