开发者

Unable to view item in browser based on its key in Python GAE

I'm using python GAE with webapp.

I have a form for a user to create a object in the database, something like:

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

After it's created, the user is redirected to a page whose URL contains that object's key... using code such as:

spam = SpamRecord(author=author, text=text)
spam.put()
new_spam_key = spam.key()
self.redirect("/view_spam/%s" % new_spam_key)

And this mostly works, with me being able to view items at:

sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQYy8oJDA sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQY_boJDA

However, there's an occasional key that won't work. Here are 2 recent examples of pages that won't load and retu开发者_JS百科rn HTTP 404 not found errors:

sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQY-5MJDA sitename.com/view_spam/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1lbnQY-boJDA

My html-mappings.py contains the following mapping:

(r"/view_spam/(\w+)", ViewSpamPage)

And the ViewSpamPage looks something like:

class ViewSpamPage(webapp.RequestHandler):
    def get(self, spam_id):
        self.response.out.write("Got here")

Can anyone offer any insight as to why this is occurring and how it may be prevented?

Thanks very much!


In regular expressions, \w doesn't match hyphens. (It will match underscores.) For that second pair of keys, this'll result in only passing part of the key to your handler.

In your URL pattern, try r"/view_spam/(.*)" instead.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜