Как создать команду управления для сброса пароля по электронной почте?

#django #django-management-command

Вопрос:

Используя инструментарий django-oauth, я должен создать команду управления, которая отправит электронное письмо со сбросом пароля на адрес электронной почты. Это электронное письмо будет иметь html — шаблон и позволит пользователю изменить свой пароль.

Я вижу, что представление имеет такую логику, но вместо этого предоставляет шаблон для ввода адреса электронной почты. Мне нужно имитировать это представление и создать команду для этого.

URL-адрес password_reset возвращает это представление и форму.

 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, *args, **options):
   // call logic for email in here ?? but how
 

Приведенный ниже метод также кажется важным. Но команды управления находятся вне контекста представления, которое обрабатывает методы http и объекты запроса.

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

Как сделать то же самое PasswordResetView , но без формы и в качестве команды управления?

Любые советы очень приветствуются!