【问题标题】:Unable to view item in browser based on its key in Python GAE无法根据 Python GAE 中的键在浏览器中查看项目
【发布时间】:2011-09-30 05:21:13
【问题描述】:

我正在将 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

但是,偶尔有一个键不起作用。以下是 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")

谁能提供任何关于为什么会发生这种情况以及如何预防这种情况的见解?

非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

    在您的 URL 模式中,改用 r"/view_spam/(.*)"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 2016-10-01
      • 2013-01-01
      • 2010-10-15
      • 2021-07-29
      相关资源
      最近更新 更多