2015-09-17 70 views
0

我有一個自定義用戶模型。成功登錄後,我得到HttpResponseRedirect中的匿名用戶以及模板。我如何獲取登錄用戶?在django上下文處理器中設置自定義用戶對象

登錄查看:

class LoginFormView(View): 
    form_class = UserLoginForm 
    user_model = get_user_model() 
    template_name = 'account/login.html' 

    def get(self, request, *args, **kwargs): 
     form = self.form_class 
     return render(request, self.template_name, {'form':form}) 

    def post(self, request, *args, **kwargs): 
     email = request.POST['email'] 
     password = request.POST['password'] 
     user = authenticate(email=email, password=password) 
     if user is not None: 
      if user.is_active: 
       login(request, user) 
       return HttpResponseRedirect(reverse('home')) 
     else: 
      messages.error(request, 'Please enter correct email and password!') 
      return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/')) 
+0

我想你可能會輸入錯誤的'login'。看到我更新的答案。 – Alasdair

回答

1

如果您已經啓用了request template context processor,你就可以用{{ request.user}}訪問用戶的模板。

其次,請確保您導入登錄函數而不是登錄查看。它應該是:

from django.contrib.auth import login 
+0

'context_processors':[ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 「django.contrib.messages.context_processors .messages', ], 我已經指定。上面的代碼片段。 –

+0

我在您的視圖中看不到問題。我會考慮使用Django的[內置登錄視圖](https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.views.login),而不是編寫自己的。 – Alasdair

+0

我只使用內置登錄功能。還使用調試器,我已檢查它工作正常,併成功登錄。 –

相關問題