2014-10-20 22 views
0

我已經創建了一個小型項目,使用python社交認證來記錄facebook。我已經提到python社交認證示例在link。我可以得到用戶名爲request.name。但我怎樣才能得到其他數據,如first_name,last_nameemail。任何幫助將appriciated如何用python社交認證獲取用戶數據?

的意見

示例代碼:

def home(request): 
    context = RequestContext(request, 
         {'request': request, 
         'user': request.user}) 
    return render_to_response('home.html', 
         context_instance=context) 

回答

1

這裏有一種方法:request.user有一個名爲is_authenticated一個輔助方法,你可以使用這樣的:

ctx = { 
     'user' : request.user 
     } 

if request.user.is_authenticated(): 
    ctx.update({ 
     'first_name': request.user.first_name, 
     'last_name': request.user.last_name, 
     'email' : request.user.email 
    }) 

現在,額外的屬性都存在只有如果用戶認證 這是,假設你使用的Django auth模型。如果不是,請相應地更改型號字段名稱。

在一個側面說明,你不應該通過整個請求對象的上下文。您應該只提取相關信息並在上下文中發送。現在

,你可以從反正模板訪問所有這些值。示例:

{% if request.user.is_authenticated %} 
    {{request.user.username}} 
    {{request.user.email}} 
    {# etc.. #} 
{% endif %} 

不需要在上下文中明確發送任何內容。該request對象已經擁有的一切

+0

謝謝你,什麼是如果用戶通過驗證我們得到的值的列表...? – Mulagala 2014-10-20 18:51:56

+1

您必須添加'SOCIAL_AUTH_FACEBOOK_SCOPE = [「郵件」]''中在settings.py'爲了從Facebook獲得的電子郵件。 – 2014-10-20 18:52:37

+1

如果你的意思是不認證,這個上下文實際上沒有任何意義,因爲它會有'用戶'。再次思考,你可以從模板本身獲得所有這些值。讓我編輯答案 – karthikr 2014-10-20 18:54:35

相關問題