Получение отображения после отправки формы в Google App Engine на Python - PullRequest
1 голос
/ 21 марта 2011

Содержимое страницы не отображается после публикации формы, но отображается при непосредственном просмотре страницы.У меня есть фрагмент кода Python App Engine, который пытается перенаправить на новую страницу и отобразить программно определенный (т.е. в коде, а не в HTML) фрагмент текста.Однако после нажатия кнопки отправки формы я получаю пустую страницу и никаких сообщений об ошибках.

Я использую примеры кода движка Google App.Форма просто принимает некоторые варианты, но я даже ничего не собираю из нее и должна перейти на новую страницу, однако это не так, и я не могу выяснить, где это может быть не так.

У меня есть

class MainPage(webapp.RequestHandler):
    def get(self):

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))

и

class Confirm(webapp.RequestHandler):
    def post(self):
       self.response.headers['Content-Type'] = 'text/plain'
       self.response.out.write('You have confirmed!')



application = webapp.WSGIApplication(
                                 [('/', MainPage),
                                  ('/confirm', Confirm)],
                                 debug=True)

def main():
   run_wsgi_app(application)

if __name__ == "__main__":
   main()

и в HTML: index.html

<html>
        <body>
          <form action="/confirm" method="post">
            <div><textarea name="content" rows="3" cols="60"></textarea></div>
            <div><input type="submit" value="Submit"></div>
          </form>
        </body>
      </html>

Я хочу знать, почему, если я отправляю форму, я неполучить Вы подтвердили!сообщение, но если я иду / подтвердить, я делаю.Спасибо.

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Ваш код работает довольно гладко;возможно, вы неправильно реализовали метод post для какой-то странной ошибки отступа (это объясняет ошибку 405).

Скопируйте и вставьте my application.py и повторите попытку:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
    def get(self):
        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, {}))

class Confirm(webapp.RequestHandler):
    def post(self):    
       self.response.headers['Content-Type'] = 'text/plain'
       self.response.out.write('You have confirmed!')

application = webapp.WSGIApplication(
                                 [('/', MainPage),
                                  ('/confirm', Confirm)],
                                 debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()
0 голосов
/ 22 марта 2011

@ Расти, я думаю, вам следует либо изменить способ отправки формы, чтобы получить, либо опубликовать и убедиться, что вы написали то же самое в application.py.или вы можете сделать что-то вроде этого

class Confirm(webapp.RequestHandler):
    def post(self):    
       self.response.headers['Content-Type'] = 'text/plain'
       self.response.out.write('You have confirmed!')
    def get(self):
       return Confirm.post(self)
0 голосов
/ 21 марта 2011

Я бы проверил ваше утверждение, что POST to Confirm работает правильно, используя curl для публикации чего-либо:

curl -v0 -F content = blah -F submit = submit 'http://my -app.appspot.com / подтвердите'

Если это работает нормально, я бы использовал HttpFox (расширение FF), чтобы посмотреть, что отправлено на сервер.

Кажется, вы либо не отправляете то, что вы думаете, либо обработчик POST не работает так, как вы думаете. Оба вышеперечисленных шага должны помочь уточнить, что есть что.

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