这可能很奇怪。这是场景:
我有一个观点。并且有两个客户端连接到我的django应用程序。我想要的是,当client1
向view
发送请求时;我想将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
。
任何形式的帮助都会很棒。
谢谢。
答案 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调用传递它来实现。虽然我可能会选择前两个中的一个,因为它更容易。