Опрос Django, показывающий после входа пользователя - PullRequest
2 голосов
/ 20 декабря 2011

Когда пользователь входит в систему, я хотел бы проверить, проголосовал ли он уже ... и если нет, перенаправить его на страницу формы опроса. Пробовал с сигналом user_logged_in, но он полностью игнорирует мою функцию redirect ().

@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

Может быть, я делаю это неправильно ... Может быть, я должен изменить запрос, поскольку я не уверен, что должен возвращать ответ здесь ... Есть ли способ без изменения представления login ()?

1 Ответ

5 голосов
/ 20 декабря 2011

Сигнал user_logged_in не позволяет изменить ответ на вход в систему, он просто позволяет выполнять вспомогательные действия. Чтобы изменить ответ на вход в систему (по умолчанию это просто перенаправление на LOGIN_REDIRECT_URL), вам необходимо использовать собственное представление входа в систему. Однако ваше представление может просто обернуть встроенное представление входа в систему: вызовите его, и если ответ является перенаправлением, а пользователь не завершил опрос, измените заголовок «Местоположение» перенаправления на страницу опроса перед возвратом. это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...