users tutorial sent register form create and django django-views django-registration

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?