我有一个 django-registration 并且正在工作。我想向它添加两个附加功能,并且在理解登录过程的内部工作时有点困难。
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
更新:我能够添加一个 hack 来让它工作,使用会话。当然这不是理想的解决方案,但这是我所拥有的——
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)
鉴于已经创建了用户帐户,我将如何发送另一封激活电子邮件?