Django - 将另一个客户端重定向到特定页面

时间:2014-04-05 11:32:55

标签: django redirect

这可能很奇怪。这是场景:

我有一个观点。并且有两个客户端连接到我的django应用程序。我想要的是,当client1view发送请求时;我想将client2重定向到另一个url。例如(伪似的):

def some_view(request, other_clients_username):
    try:
        client2 = UserProfile.objects.get(username=other_clients_username)
    except:
        return HttpResponseNotFound('user not found')

    client2.redirect('/door-screen/')
    return HttpResponse('%s redirected successfully', %client2.username)

client1使用some_view参数向username发送请求。

如果user存在,则user登录的客户端应重定向到door-screen页。

在此之前我从不需要这样的东西。我甚至无法想象如何做到这一点。 Redirecting a user which is not request's owner

任何形式的帮助都会很棒。

谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题的一个解决方案是使用websockets或像Pusher这样的库。基本上,您可以在推送器内的线路上发送消息,告知客户端2的浏览器重定向到给定的URL。显然,如果用户知道会发生这种情况,这很容易解决。

无论如何,你的后端视图看起来像这样:

p = pusher.Pusher(app_id='your-pusher-app-id', key='your-pusher-key', secret='your-pusher-secret')
p[client2.pusher_channel].trigger('redirect', {'url': '/door-screen/'})

请注意,这假设您使用https://github.com/pusher/pusher_client_python

您的模板需要通过推送通道,因此client2的浏览器连接到正确的频道。您可以通过将通道ID存储在隐藏输入中,将其作为模板本身的javascript变换,或者甚至可以通过ajax调用传递它来实现。虽然我可能会选择前两个中的一个,因为它更容易。