无法根据Python GAE中的键在浏览器中查看项目

时间:2011-09-30 05:21:13

标签: python google-app-engine web-applications

我正在使用带有webapp的python GAE。

我有一个表单供用户在数据库中创建一个对象,如:

class SpamRecord(db.Model):
    author = db.ReferenceProperty(Author, required=True)
    text = db.StringProperty()

创建完成后,用户将被重定向到其网址包含该对象密钥的网页...使用以下代码:

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

然而,偶尔会有一个不起作用的钥匙。以下是最近2个不会加载并返回HTTP 404 not found错误的网页示例:

  

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")

任何人都可以提供有关为何会发生这种情况以及如何防止这种情况的任何见解吗?

非常感谢!

1 个答案:

答案 0 :(得分:6)

在正则表达式中,\w与连字符不匹配。 (它将匹配下划线。)对于第二对键,这将导致仅将键的部分传递给处理程序。

在您的网址格式中,请尝试使用r"/view_spam/(.*)"