一尘不染

如何使Django密码重置电子邮件的HTML?

django

MyDjango应用程序当前已设置为使用本机注册包来处理用户身份验证和管理。

我创建了一些文件myApp/templates/registration,用于发送密码重置令牌.

它工作正常。除了密码重设电子邮件外,它是一个丑陋的纯文字怪物。我想使其与My应用程序发送的所有其他电子邮件的外观和风格相匹配。IE:我希望它是HTML,并包含图像,样式和链接。我怎么做?

我按照这里的详细说明进行操作。但是,该代码中有一个错误,我不知道该如何处理:'CustomPasswordResetForm' object has no attribute 'users_cache'

有人可以向我展示一个详细的工作示例,以实现此目标吗?我希望它没有那么难。


阅读 455

收藏
2020-04-03

共1个答案

一尘不染

由于发现该问题的其余答案已过期,因此添加了针对Django 2.0版的发现。

在2.0中,将URL添加到urls.py文件的正确方法是使用path():

from django.urls import path
from django.contrib.auth import views as auth_views

path('accounts/password_reset/', auth_views.PasswordResetView.as_view(
  html_email_template_name='registration/password_reset_html_email.html'
)),

.as_view()函数是下一个要突出显示的代码段。Django 2.0将身份验证视图实现为类。您可以在身份验证视图文档中阅读有关此内容的更多信息。

然后,您可以使用.as_view()将类“转换”为视图,并且可以将源代码中定义的任何类属性作为命名参数传递。

传入html_email_template_name(默认为None)会自动发送html电子邮件。

您可以通过以下python路径访问PasswordResetView的源代码:django.contrib.auth.views

在这里,您可以看到可以传递到PasswordResetView和其他身份验证视图中的其他类属性。这对于将extra_context传递到django模板中也是非常有用的。

2020-04-03