如何在Django中重定向用户到notify URL被访问后?

-2 投票
1 回答
673 浏览
提问于 2025-04-18 10:11

我在寻找一些方向。
我有一个Django项目,里面有很多视图。我需要做的是在外部应用完成某个任务后,把用户重定向到一个成功的URL。

到目前为止,我已经设置了一个视图,并在urls.py中添加了相应的条目。

# views.py
def notifyURL(request):
    return HttpResponseRedirect('/success_page/')

notifyURL是由我写的一个外部应用通过简单的GET请求来访问的。不过,似乎Django并不会把浏览器重定向,而是把请求返回给调用的(无头)应用。

我该怎么做才能让这个功能正常工作呢?

提前谢谢你。

1 个回答

1

你问的这个问题其实不能通过“重定向”来实现。

用户只能在发出请求的时候被重定向。如果用户已经发出了请求并收到了响应,那么你就不能再根据后端发生的其他事件来“重定向”这个用户。

你需要的是一种方法,让后端的Django应用能够通知前端(也就是JavaScript应用)某个事件已经发生,用户应该通过JavaScript被转到一个新的网址。

有两种方法可以做到这一点:

  1. “轮询” - 也就是JavaScript定期联系后端,比如用一个 setInterval 定时器通过ajax请求一个状态网址。这种方法在Django中实现起来可能是最简单的。
  2. “推送” - 也就是后端直接联系前端……这基本上是使用WebSockets,这在Django(或者任何WSGI的Python网络框架)中实现起来就没那么简单。不过你可以参考这个链接获取帮助 https://django-omnibus.readthedocs.org/en/latest/

撰写回答