Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django轮询在用户登录后显示_Django_Redirect_Request_Signals_Authentication - Fatal编程技术网

Django轮询在用户登录后显示

Django轮询在用户登录后显示,django,redirect,request,signals,authentication,Django,Redirect,Request,Signals,Authentication,当用户登录时,我想检查他是否已经投票。如果没有,将他重定向到投票表单页面。尝试使用用户登录信号,但它完全忽略我的重定向功能 @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

当用户登录时,我想检查他是否已经投票。如果没有,将他重定向到投票表单页面。尝试使用用户登录信号,但它完全忽略我的重定向功能

@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\u redirect\u URL),您需要使用自己的登录视图。但是,您的视图可以只包装内置的登录视图:调用它,如果响应是重定向并且用户尚未完成轮询,则在返回它之前将重定向的位置头更改为轮询页面