2013-07-29 2 views
0

Я пропустил маршрутизацию webapp2.Ошибка маршрутизации Google Appengine

Моя модель:

class Letter(ndb.Model): 
    letter = ndb.StringProperty(indexed=False) 

мой обработчик:

lass GoLetter(webapp2.RequestHandler): 

    def get(self, letter_letter): 
     pass 

     template = JINJA_ENVIRONMENT.get_template('detail.html') 
     self.response.write(template.render()) 



application = webapp2.WSGIApplication([ 
    webapp2.Route('/', MainPage), 
    webapp2.Route('/letter/([-\w]+)', handler=GoLetter), 
], debug=True) 

и мой шаблон:

{% for letter in letters %} 
    <a href="/letter/?letter_letter={{ letter.letter }}">{{ letter.letter }}</a> 
    {% endfor %} 

я получаю только 404 не найден. Пожалуйста, скажите мне, где я ошибаюсь? Благодарю.

+0

Жаль, что вы работаете над этим в течение многих часов, но вам нужно определить проблему лучше. Какая «маршрутизация» не удалась? Что ты пытаешься сделать? Почему вы добавили проход под обработчиком get? Что такое образец письма? Какой URL-адрес не удается? – Jonathan

ответ

3

Таким образом, ссылка в вашем шаблоне имеет другую форму, чем маршрут, определенный для приложения.

Вы установили, что конечная точка /letter/([-\w]+), но ваша ссылка идет на /letter/?letter_letter=a.

Заменить ссылку с

<a href="/letter/{{ letter.letter }}">{{ letter.letter }}</a> 

EDIT: По какой-то причине, имеющей webapp2.Route делает вещи, чтобы не работать. Заменить webapp2.Route('/letter/([-\w]+)', handler=GoLetter) на ('/letter/([-\w]+)', GoLetter).

+0

он не работал, пожалуйста, вы можете мне помочь, я работал над часами :( –

+0

По какой-то причине наличие webapp2.Route не позволяет работать. Замените webapp2.Route ('/ letter/([- \ w ] +) ', handler = GoLetter), с ('/letter/([- \ w] +) ', GoLetter). Я проверил это на игровой площадке https://cloud-playground.appspot.com/playground/p /6727161104826368/#helloworld.py –

+0

Да, это сработало. Большое спасибо Себастьяну, я ценю вашу помощь :) –