【问题标题】:Dynamic pages in Google App EngineGoogle App Engine 中的动态页面
【发布时间】:2013-08-13 08:37:57
【问题描述】:

我有一个页面的代码,类的形式是

class page1(webapp2.RequestHandler):
    ...code...

class page2(webapp2.RequestHandler):
    ...code...

等等。然后我有

application = webapp2.WSGIApplication([
    ('/', page1),
    ('/page2', page2),
    ...(other pages)...
], debug=True)

有些网址我不知道,所以我不能把它们放在应用程序部分。我知道他们在表格中

'/page2/[something]'

'/page2/[something]/[something_else]'

等等,但除此之外,我对它们一无所知。我想将 '/page2/[something]' 与 page2 类匹配。我单击一个超链接,它会将我带到“/page2/abc”或“/page2/def”页面,我希望它们都与相同的页面类配对。我该怎么做呢?

编辑:

我尝试使用正则表达式映射,与

application = webapp2.WSGIApplication([
    ('/', page1),
    ('/page2', page2),
    ('/page2/*', page2)
], debug=True)

但是当我使用 url /page2/[something] 访问任何页面时,它会给我一个 404 Not Found 错误。

【问题讨论】:

  • 您应该以通用形式设计您的 URL 方案,然后寻找解决方案。如果您想使用 webapp2,那么您将需要使用正则表达式映射。或者查看其他处理程序/环境,例如 bobo、flask、pyramid。例如,我将金字塔用于 cms 风格的应用程序,这些应用程序具有映射到对象层次结构的任意深度 url。
  • 查看我的编辑 - 我正在尝试使用正则表达式映射。

标签: python google-app-engine url


【解决方案1】:

您需要做的是阅读here 并按照指定的方式映射您的网址。 看看这一行:

webapp2.Route(r'/products/<product_id:\d+>', handler=ProductHandler, name='product'),

这意味着您将期望一个整数(d+ 表示 1 个或多个数字,按顺序排列,如 1、123、12491479 等),您将在您的视图中以 product_id 提供该信息

这就是regex mapping 的意思。如果您不知道您的参数会是什么样子,我建议您将它们存储在 GET 请求中,这样您就不需要为它们指定地图

('/page2/.*', page2)

足以捕获/page2/?param=val&amp;param=val&amp;... 形式的url

【讨论】:

  • 然而 ('/page2', page2) 给我一个 404 not found 错误。
  • /成功加载page1。 ('/page2, page2) 成功加载 page2,但不加载 /page2/[something_else] 形式的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多