我将 python GAE 与 webapp 结合使用。
我有一个表单供用户在数据库中创建一个对象,例如:
class SpamRecord(db.Model):
author = db.ReferenceProperty(Author, required=True)
text = db.StringProperty()
创建后,用户将被重定向到一个页面,该页面的 URL 包含该对象的键...使用如下代码:
spam = SpamRecord(author=author, text=text)
spam.put()
new_spam_key = spam.key()
self.redirect("/view_spam/%s" % new_spam_key)
这大部分都有效,我可以在以下位置查看项目:
sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQYy8oJDA sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQY_boJDA
但是,偶尔会有一个键不起作用。以下是无法加载并返回 HTTP 404 not found 错误的 2 个最新示例:
sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQY-5MJDA sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQY-boJDA
我的 html-mappings.py 包含以下映射:
(r"/view_spam/(\w+)", ViewSpamPage)
ViewSpamPage 看起来像这样:
class ViewSpamPage(webapp.RequestHandler):
def get(self, spam_id):
self.response.out.write("Got here")
任何人都可以提供任何关于为什么会发生这种情况以及如何避免这种情况的见解吗?
非常感谢!
请您参考如下方法:
在正则表达式中,\w 不匹配连字符。 (它将匹配下划线。)对于第二对键,这将导致仅将键的部分传递给您的处理程序。
在您的 URL 模式中,尝试使用 r"/view_spam/(.*)" 代替。
