1

我正在使用开箱即用的 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'
    ...

谢谢你的任何建议。

4

1 回答 1

2

你的User对象有post_login_info成员吗?如果是这样,您应该user.save()在设置后调用post_login_info

如果没有,您将不得不找到一些其他方式来保存该信息。一种可能是 Django 的会话存储机制、带有成员的自定义 User 模型post_login_info或新模型(例如PostLoginInfo,带有 User.User 的外键)。

于 2013-10-18T19:38:20.753 回答