2011-12-19 37 views
2

當用戶登錄時,我想檢查他是否已經投票投票。如果沒有,將他重定向到投票表單頁面。嘗試使用user_logged_in信號,但它完全忽略了我的redirect()函數。Django民意調查顯示用戶登錄後

@receiver(user_logged_in) 
def check_poll(sender, user, request, **kwargs): 
    """Check if any active polls available and redirect user if needed""" 

    try: 
     # there can only be 1 active poll 
     poll = Poll.objects.get(active=True) 
     if not poll.has_user_voted(request.user): 
      return redirect(poll) 

    except ObjectDoesNotExist: 
     pass 

也許我這樣做是錯誤的way..Maybe因爲我不知道我應該在這裏返回響應,我應該修改的請求......有沒有修改登錄()視圖中的任何方法?

回答

5

user_logged_in信號不允許您更改對登錄的響應,它只是允許您執行輔助操作。爲了更改對登錄的響應(默認情況下只是重定向到LOGIN_REDIRECT_URL),您需要使用自己的登錄視圖。但是,您的視圖只能包裝內置的登錄視圖:調用它,如果響應是重定向,並且用戶尚未完成輪詢,請在返回之前將重定向的「位置」標題更改爲輪詢頁面它。