У меня есть django-регистрация и работает.Я хотел бы добавить к нему две дополнительные функции, и у меня возникли некоторые трудности с пониманием внутренней работы процесса входа в систему.
1) Когда пользователь нажимает на электронное письмо для активации, он активирует учетную записьно не регистрирует пользователя, как бы я сделал так, чтобы щелкнув ссылку активации, вы одновременно активировали учетную запись и автоматически вошли в систему?В настоящее время моя функция 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
update : я смог добавить хак, чтобы он заработал, используя сеансы,Конечно, это не идеальное решение, но вот что у меня есть -
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) Я хотел бы добавить опцию для пользователя, чтобы иметь возможность нажать кнопку, чтобы получить другое письмо активации (следуетон не смог получить первый).Похоже, что в этом случае электронное письмо с кодом активации отправляется при регистрации -
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
Как мне отправить другое электронное письмо с активацией, если учетная запись пользователя уже создана?