没有浏览器在django中触发密码重置电子邮件?

Stu*_*xon 7 forms passwords django reset

我希望能够使用django.contrib.auth.views.password_reset发送密码重置电子邮件但不使用浏览器 - password_reset需要填充表单,有没有办法可以编程方式创建并发送电子邮件?

oji*_*jii 14

from django.contrib.auth.forms import PasswordResetForm

def reset_password(email, from_email, template='registration/password_reset_email.html'):
    """
    Reset the password for all (active) users with given E-Mail adress
    """
    form = PasswordResetForm({'email': email})
    return form.save(from_email=from_email, email_template_name=template)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在较新的Django版本中(不确定从哪个版本开始),您需要在form.save()之前调用form.is_valid()。 (3认同)
  • 如果您不发送“请求”,则可能需要添加“ domain_override” kwarg进行保存。如`form.save(from_email = from_email,mail_template_name = template,domain_override =“ localhost:8000”)```这样可以防止`AttributeError:'NoneType'对象没有属性'get_host' (2认同)

gla*_*xly 6

您可以使用django.contrib.auth.forms.PasswordResetForm并使用以下数据填充它:

form = PasswordResetForm({'email':'sample@sample.com'})
Run Code Online (Sandbox Code Playgroud)

发送电子邮件是在save()时完成的.