如何向经过身份验证的用户添加登录后信息?

时间:2013-10-18 19:26:16

标签: python django

我正在使用开箱即用的django 1.5身份验证解决方案。经过身份验证后,我想使用来自django.contrib.auth.signals的user_logged_in信号向用户添加“post_login_info”

from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver

@receiver(user_logged_in)    
def post_login_action(sender,user,request,**kwargs):
    user.post_login_info = 'my post login information'

但是,我无法稍后从请求对象中检索user.post_login_info,如下所示:

from braces.views import LoginRequiredMixin
from django.views.generic import ListView

class MyListView(LoginRequiredMixin,ListView):
def get_queryset(self):
    self.request.user.post_login_info  # Attribute Error: 'User' object has no attribute 'post_login_info'
    ...

感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

您的User对象是否有post_login_info成员?如果是这样,您应在设置user.save()后致电post_login_info

如果没有,你将不得不找到其他方法来保存这些信息。一种可能性是Django的session storage mechanismcustomized User model post_login_info成员,或新模型(例如PostLoginInfo,其中包含用户的外键。