2013-10-18 24 views
1

我正在使用開箱即用的django 1.5身份驗證解決方案。身份驗證後,我想用user_logged_in信號從django.contrib.auth.signals如何向經過驗證的用戶添加登錄後信息?

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' 

但是添加「post_login_info」給用戶,我不能從請求對象檢索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' 
    ... 

謝謝你的任何建議。

+0

是什麼'post_login_info'? – karthikr

+0

我有用戶和商店之間的多對多關係,她所以post_login_info應該是cur_login_store,如果她只屬於一個商店,很容易,因爲我不需要用戶交互來解決這個問題。如何處理用戶屬於多個商店的情況是另一個障礙,我沒有弄清楚,所以我繼續這個臨時解決方案(每個商店只允許一個用戶) –

回答

2

您的User對象是否有post_login_info的成員?如果是這樣,在設置post_login_info之後,應該調用user.save()

如果不是,您將不得不尋找其他方式來堅持這些信息。一種可能是Django的session storage mechanism,具有post_login_info部件customized User model,或一個新的模型(例如PostLoginInfo有外鍵的用戶。

+0

會話存儲看起來像這個問題的適當使用。 –

+0

會話存儲是我正在尋找。但它仍然竊聽我如何user.post_login_info丟失了。謝謝! –

相關問題