所以我在main.py
内为我的应用程序定义了路由,例如:
app = webapp2.WSGIApplication([
webapp2.Route('/', handler=HomePage, name="home")
])
在cron工作中我似乎无法访问应用程序的路线,例如这不起作用:
self.uri_for('home')
我在网上找到了一个修补它的片段,但使用它很难看:
cls.app.router.add(r)
r
将是一系列路线。
有没有办法在app引擎cron作业中访问应用程序的路径?
答案 0 :(得分:2)
您的示例不正确,似乎是simple routes和extended routes之间的交叉。
为了能够使用self.uri_for('home')
,您需要使用命名路由,即扩展路由:
app = webapp2.WSGIApplication([
webapp2.Route(r'/', handler=HomePage, name='home'),
])
在self.uri_for('home')
应该工作的情况下,假设self
是webapp2.RequestHandler
个实例。
解决方法看起来很丑陋,但这几乎是uri_for
under the hood所做的事情:
def uri_for(self, _name, *args, **kwargs):
"""Returns a URI for a named :class:`Route`.
.. seealso:: :meth:`Router.build`.
"""
return self.app.router.build(self.request, _name, args, kwargs)