django - 如何创建管理命令以通过电子邮件发送密码重置?
问题描述
使用 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, *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
没有表格和管理命令的情况下做同样的事情?
非常欢迎任何建议!
解决方案
推荐阅读
- c++ - 为什么这段代码在 x64 版本和调试中的运行方式不同?
- reactjs - 是否有任何工具可以确保反应应用程序中文件/导入/导出命名的一致性
- python - 多线程问题 - Python2 - retcode -11 失败
- shell - 如何在shell中递归查找文件
- linux - 中断上下文中的死锁
- java - NoClassDefFoundError 即使 jar 在模块路径 Eclipse 中
- c - 如何获取数据类型为 uint8_t 变量的字符串字符并将它们用作十六进制变量?
- python - 通过python调用C++类DLL不起作用
- html - 溢出自动无法纠正图像
- server - 当第一台服务器关闭时,域如何自动从另一台服务器获取网站内容?