Django AllAuth – ¿Cómo enviar manualmente un correo electrónico para restablecer la contraseña?

En mi aplicación estoy usando Django Allauth. No tengo ningún formulario de registro para usuarios. El administrador va a registrar a los usuarios cargando un archivo de Excel que contiene información del usuario. He hecho todo esto y los usuarios se guardan en la tabla de usuarios mediante la generación automática de contraseñas. Después de cargar las listas de usuarios y guardarlas en la base de datos, deseo enviar un correo electrónico para restablecer la contraseña a cada usuario.

En allauth para restablecer la contraseña, primero debe ir a restablecer la account/password/reset/ página account/password/reset/ y escribir su correo electrónico. luego se envía un correo electrónico que le indica que cambie la contraseña account/password/reset/key/(?P[0-9A-Za-z]+)-(?P.+)/

¿Es posible enviar el correo electrónico directamente dentro de la aplicación? La url contiene una clave que no sé cómo generar !! ¿O hay alguna manera mejor de hacerlo?

Es posible. Mi solución implementa una señal de post_save de modelo de usuario para llamar a la vista de restablecimiento de la contraseña de Allauth que enviará al usuario el correo electrónico. Lo primero a considerar es hacer que la dirección de correo electrónico del usuario sea obligatoria en el formulario de creación del usuario administrador (como se explica aquí ). Y luego usa este código:

 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!