我有时候不确定如何使用webapp2.redirect。
有没有时间我应该使用
self.redirect("/blah")
代替return self.redirect("/blah")
以下是我对时间线的理解/猜测:(有时候我很困惑,如果响应对象做某事或者webapp2做了什么)
初始get函数的示例:
def get():
self.write('hello world')
self.redirect('/foo')
self.write('bye world')
“发生的事情”是什么?我想路由器找到/ foo /的RequestHandler。 在foo的requestHandlers get()方法被调用之前对请求和响应进行了哪些修改。请求是否被删除并替换为新的GET请求?是否删除了响应并替换为新响应?初始请求处理程序中存在哪些上下文?代码执行是否返回初始请求处理程序get方法,如果是,那么可能存在的上下文是否已恢复?
抱歉如果这有点拗口,我试着解释一下我想知道的事情:)
也许更容易要求使用重定向的一些用例(做和不做)。
答案 0 :(得分:11)
重定向方法实际上只是设置响应状态和响应位置标头的一些有用的漏洞。在将响应发送到重定向之后的客户端之前,没有任何事情发生。您可能希望返回调用重定向的结果,只是为了避免在您不想运行的重定向之后有更多代码运行。
源码很容易阅读.. http://webapp2.readthedocs.io/en/latest/_modules/webapp2.html#redirect