2012-10-10 51 views
1

我使用的是來自django的默認模型用戶(因爲我使用的是django-facebook),並且用戶身份驗證在模板中不起作用。下面是代碼:Django用戶身份驗證不起作用

{% if request.user.is_authenticated %} 
    Welcome, {{ request.user.first_name }} 
    <a href="/logout">logout</a> 
{% else %} 
    <form action="{% url facebook_connect %}?facebook_login=1" method="post"> 
     <a href="javascript:void(0);" style="font-size: 20px;" onclick="F.connect(this.parentNode);"> 
      <img src="/media/images/site/facebook_login.png" alt="facebook_login" class="facebook_login_button"/> 
     </a> 
     <input type="hidden" value="{{ request.path }}" name="next" /> 
    </form> 
{% endif %} 

我通過從視圖中context_instance:

return render_to_response('index.html', context, context_instance=RequestContext(request)) 

但還是將無法正常工作。謝謝你的幫助!

編輯:

的用戶成功登錄與django的Facebook的(插入AUTH_USER表)和他的數據被示出,但是當用戶註銷他的數據消失,並且如看到的已編輯的代碼以上登錄表單不顯示!

這裏是我進出用戶使用記錄的完整視圖:

def logout_view(request): 
    logout(request) 
    return HttpResponseRedirect('/') 

def signin(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      return HttpResponseRedirect('/') 
     else: 
      # TO RETURN ERROR 
      return HttpResponseRedirect('/') 
    else: 
     # TO RETURN ERROR 
     return HttpResponseRedirect('/') 

如果我刪除從request.user.first_name出現錯誤請求:

您需要設置AUTH_PROFILE_MODULE在您的項目設置

也就是說所有的細節,我可以得到..

+1

你的問題太模糊這樣做,是可以使用的屬性。是否返回錯誤?您的用戶是否已登錄,但未顯示歡迎消息?究竟是什麼 - 沒有工作......? –

+0

所以你說模板總是渲染「Welcome,」? – jdi

+0

當用戶登錄時,首先說出他的名字,但是當他註銷時,它保持空白。 – dark4p

回答

5

我不知道爲什麼request.user.is_authenticated不工作的原因,但我已經找到了解決方案 - 使用代替

{% if not user.is_anonymous %}

{% if request.user.is_authenticated %}

似乎這樣的伎倆。如果工作和只登錄用戶都顯示他們的信息和註銷按鈕。

+0

你有沒有想過爲什麼?我有同樣的結果 - 這對我很好,但我不知道爲什麼前者不起作用。 –

+0

對不起克里斯托弗,我發佈這個後很快就從這個項目中移出來,沒有時間弄清楚爲什麼它不能正常工作。 – dark4p

+0

我認爲可能發生的事情是用戶對象實際上並沒有在上下文中定義,所以'user.is_anonymous'返回false,因爲對象不在作用域中 - 因此'if not'返回true並且分支被執行。如果我是對的,這可能實際上是一個非常滑的斜坡。但我不確定! @ChristopherArmstrong,你覺得怎麼樣? – Ela782

1

is_authenticated()是一個函數調用,而不是因爲你的模板代碼