谷歌应用引擎:重定向到请求处理器

3 投票
3 回答
1169 浏览
提问于 2025-04-16 01:24

我刚开始使用 Google App Engine 和 Python,正在跟着一个教程写自己的小应用,以便熟悉这个网页应用框架。现在我注意到教程中有一行代码 self.redirect('/')。这让我想知道:有没有办法重定向到一个处理程序,而不是写死一个路径?我觉得这样可能更好,因为这样你可以在不破坏应用的情况下更改你的网址。

3 个回答

0

接受的答案让我自己动手做了一个小路由器,后来我才意识到在webapp2中,你可以给你的路由起个名字,然后用这个名字来重定向,具体可以参考webapp2的URI路由

app = webapp2.WSGIApplication(
              routes=[webapp2.Route('/', handler='RootController', name='root')])

然后在RequestHandler中进行重定向。

self.redirect_to('root')

如果你的路径中有占位符,你可以提供这些占位符的值,webapp2.Router会为你生成正确的URI。想了解更多详细信息,可以再看看webapp2的URI路由

1

这其实不是App Engine的限制,而是它使用的webapp框架的问题。webapp框架是为了轻量级设计的,主要提供一些基本功能。

如果你想要更复杂的重定向功能,可以试试Django。

3

一种替代方案是创建一个符号名称和网址的对应关系,这样你就可以根据这个对应关系来重定向到相应的网址。这样一来,你就可以随意更新你的网址了。

或者,如果你更想从另一个处理程序执行代码,我不明白为什么你不能直接调用一个方法。最糟糕的情况是,你可以把两个处理程序中共同的部分提取出来,放到一个方法里,然后调用这个方法。

撰写回答