【发布时间】:2014-10-23 17:26:23
【问题描述】:
我的 Google 应用引擎中有一个页面需要根据通过页面 URL 提供的参数从数据存储中获取记录。页面的 URL 类似于 http://example.appspot.com/page/WILDCARD/,其中 WILDCARD 是记录的唯一标识符(32 个字符的十六进制字符串)。然后它获取 WILDCARD 指定的记录并将其显示在模板page.html 上,或者至少这是它应该做的。每当我以http://example.appspot.com/page/WILDCARD/ 身份访问该页面时,都会收到 404 错误。有谁知道为什么/有人可以提出为什么会这样的原因吗?谢谢。
在我的 WSGI 类处理程序中,我有
('/page/([^/]+)/', PageHandler),
PageHandler 类本身是
class PageHandler(webapp2.RequestHandler):
def get(self, recordID):
allrecords = db.GqlQuery("SELECT RECORD FROM RECORDS WHERE recordid = :record",record = recordID)
if not allrecords:
self.redirect("../") #the URL is screwed up, so we're redirecting you back to the main page
else:
for row in allrecords:
template = JINJA.get_template("page.html")
self.response.out.write(template.render({ "recordtext":row.RECORD, "recordid":recordID }))
附加细节:JINJA 只是默认的 jinja 环境,我很确定这没有什么问题。 RECORDS 是一个 db.Model 类型类,它具有成员 RECORD(文本属性)和 recordid(字符串属性)。它目前没有填充任何数据。
编辑:没关系,我解决了这个问题。当我简化问题时,这是我自己的愚蠢。事实证明,在实际实现中(即这个例子的复杂版本),我认为我的 URL 和 /page/ 的实际值之间存在微小差异。道歉。
【问题讨论】:
-
你也可以链接你的 app.yaml 吗?我认为重定向可能根本没有正确放置在那里。
-
我的 app.yaml 与这个简化的例子有很大的不同,但是我的 yaml 配置中与这个页面处理程序相关的唯一行是: - url: .* script: main.app secure: always跨度>
标签: google-app-engine python-2.7 wsgi