2011-12-19 3 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にリダイレクトされます)、独自のログインビューを使用する必要があります。ただし、あなたのビューは組み込みのログインビューをラップするだけで、それを呼び出すことができます。応答がリダイレクトであり、ユーザーが投票を完了していない場合は、返信前に投票ページへのリダイレクトの「場所」ヘッダーを変更しますそれ。

関連する問題