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

Posted

技术标签:

【中文标题】在没有浏览器的情况下在 django 中触发密码重置电子邮件?【英文标题】:Trigger password reset email in django without browser? 【发布时间】:2011-08-01 10:33:33 【问题描述】:

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

【问题讨论】:

“没有浏览器”/“不是没有浏览器”。什么? @S.Lott - 嘿,问题输入得很糟糕:) 【参考方案1】:
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)

【讨论】:

如果您收到重定向错误,则需要将模板添加到您的 url,如下所述:***.com/questions/4790838/… 请注意,在更新的 Django 版本中(不完全确定从哪个开始),您需要在 form.save() 之前调用 form.is_valid() 如果您从视图中调用 form.save(),您可能还需要将请求作为参数之一传递... form.save(request=request, ...)跨度> 如果您不发送“请求”,您可能需要添加一个“domain_override”kwarg 来保存。如form.save(from_email=from_email, mail_template_name=template, domain_override="localhost:8000") 这样可以防止AttributeError: 'NoneType' object has no attribute 'get_host'【参考方案2】:

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

form = PasswordResetForm('email':'sample@sample.com')

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

【讨论】:

以上是关于在没有浏览器的情况下在 django 中触发密码重置电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

你可以在没有模型的情况下在 Django 中运行原始 MySQL 查询吗?

在没有声明密码的情况下在 ASP.NET 中进行模拟

我们如何在没有列表理解的情况下在 m2m 字段的 django 管理面板中显示用户

我可以在没有自动 ID 的情况下在 Django 中创建模型吗?

如何在没有注册页面的情况下在 mongodb 中使用 bcrypt 散列密码?

如何在没有后端服务器的情况下在 24 小时后触发桌面通知?