我在我的Google appengine中有一个页面,需要根据通过页面URL提供的参数从数据存储中获取记录。该页面的URL看起来像http://example.appspot.com/page/WILDCARD/,其中WILDCARD是记录的唯一标识符(32个字符的十六进制字符串)。然后它会记录WILDCARD指定的记录并将其显示在模板page.html
上,或者至少这是它应该执行的操作。无论何时我以http://example.appspot.com/page/WILDCARD/的身份访问该页面,都会收到404错误。有谁知道为什么/有谁可以提出为什么这可能是原因?谢谢。Appengine通配符URL问题
在我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
只是默认神社的环境,我敢肯定,没有什么那是错的。 RECORDS
是一个db.Model
类型类,它具有成员RECORD
(文本属性)和recordid
(字符串属性)。目前尚未填充任何数据。
编辑:没关系,我解决了这个问题。当我简化问题时,这是我自己的愚蠢。事实证明,在实际实施中(即这个例子的复杂版本),我认为我的网址和它实际用于/ page /之间的差异很小。道歉。
你可以链接你的app.yaml吗?我认为重定向可能根本就不会在那里正确地进行。 – Patrice 2014-08-29 17:25:53
我的app.yaml从这个简单的例子非常不同,但唯一的线在我的YAML配置相关与这个页面的处理程序是: - 网址:* 脚本:main.app 安全:总是 – user3059347 2014-08-29 18:37:48