在我的应用程序中,我使用的是Django Allauth。我没有任何 用户注册表格。管理员将通过上传 包含用户信息的Excel文件来注册用户。我已完成所有这些操作,并且 通过自动生成密码将用户保存在用户表中。上传用户列表并将其 保存在数据库中之后,我想向每个用户发送重置密码电子邮件。
在allauth重置密码中,您首先需要进入重置页面 account/password/reset/并输入您的电子邮件。然后会发送一封电子邮件, 指示您更改密码 account/password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/
account/password/reset/
account/password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/
是否可以直接在应用程序内发送电子邮件?该URL包含一个 我不知道如何生成的密钥!还是有更好的方法呢?
这是可能的。我的解决方案实现了一个用户模型post_save信号来调用 Allauth密码重置视图,该视图将向用户发送电子邮件。首先 要考虑的是使用户的电子邮件地址的管理员强制用户创建形式(如解释在这里)。然后使用以下代码:
from allauth.account.views import PasswordResetView from django.conf import settings from django.dispatch import receiver from django.http import HttpRequest from django.middleware.csrf import get_token @receiver(models.signals.post_save, sender=settings.AUTH_USER_MODEL) def send_reset_password_email(sender, instance, created, **kwargs): if created: # First create a post request to pass to the view request = HttpRequest() request.method = 'POST' # add the absolute url to be be included in email if settings.DEBUG: request.META['HTTP_HOST'] = '127.0.0.1:8000' else: request.META['HTTP_HOST'] = 'www.mysite.com' # pass the post form data request.POST = { 'email': instance.email, 'csrfmiddlewaretoken': get_token(HttpRequest()) } PasswordResetView.as_view()(request) # email will be sent!