tutorial - register and login django
Auto iniciar sesión y volver a enviar el correo electrónico (1)
1).
from django.contrib.auth import login
from registration import signals
def login_on_activation(user, request, **kwargs):
user.backend=''django.contrib.auth.backends.ModelBackend''
login(request, user)
signals.user_activated.connect(login_on_activation)
2). registration.models.RegistrationProfile.send_activation_email
method.
Tengo un registro de Django y estoy trabajando. Me gustaría agregarle dos características adicionales y estoy teniendo dificultades para entender el funcionamiento interno del proceso de inicio de sesión.
1) Cuando un usuario hace clic en el correo electrónico de activación, activa la cuenta pero no ingresa al usuario, ¿cómo lo haré haciendo clic en el enlace de activación para que la cuenta se active y se conecte automáticamente al usuario? Este es el aspecto actual de mi función de activate
:
def activate(self, request, activation_key):
activated = RegistrationProfile.objects.activate_user(activation_key)
if activated:
signals.user_activated.send(sender=self.__class__,
user=activated,
request=request)
login (request, activated) ### if I try this line, it throws an error ''User''
### object has no attribute ''backend
return activated
actualización : pude agregar un truco para que esto funcione, usando sesiones. Seguramente no es la solución ideal, pero esto es lo que tengo:
def register(self, request, **kwargs):
...
new_user.save()
request.session[''username''] = username
request.session[''password''] = password
return new_user
def activate(self, request, activation_key):
username = request.session[''username'']
password = request.session[''password'']
activated = RegistrationProfile.objects.activate_user(activation_key)
if activated:
signals.user_activated.send(sender=self.__class__,
user=activated,
request=request)
user = authenticate(username=username, password=password)
login(request, user)
return activated
2) Me gustaría agregar una opción para que un usuario pueda hacer clic en un botón para recibir otro correo electrónico de activación (en caso de que no reciba el primero). Parece que a continuación se envía el correo electrónico de activación al registrarse:
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
¿Cómo enviaría otro correo de activación dado que la cuenta de usuario ya se ha creado?