Невозможно просмотреть элемент в браузере, основываясь на его ключе в Python GAE - PullRequest
1 голос
/ 30 сентября 2011

Я использую python GAE с веб-приложением.

У меня есть форма для пользователя, чтобы создать объект в базе данных, что-то вроде:

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/ag1waWNreXByZXNlbnRzchQLEgxBbm5vdW5jZW1Вот 2 недавние примеры страниц, которые не будут загружать и возвращать HTTP 404 not found ошибки:

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

My 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 Ответ

6 голосов
/ 30 сентября 2011

В регулярных выражениях \w не соответствует дефисам. (Он будет соответствовать подчеркиванию.) Для этой второй пары ключей это приведет только к передаче части ключа вашему обработчику.

В вашем шаблоне URL вместо этого попробуйте r"/view_spam/(.*)".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...