问题描述
使用 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 (将#修改为@)