O Google Code é oferecido em: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Para permitir que os usuários postem suas próprias saudações, temos que conseguir processar as informações enviadas pelos usuários por meio de um formulário da web. A estrutura do webapp facilita o processamento de dados de formulário.
Substitua o conteúdo de helloworld/helloworld.py pelo seguinte:
import cgi
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write("""
<html>
<body>
<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form>
</body>
</html>""")
class Guestbook(webapp.RequestHandler):
def post(self):
self.response.out.write('<html><body>You wrote:<pre>')
self.response.out.write(cgi.escape(self.request.get('content')))
self.response.out.write('</pre></body></html>')
application = webapp.WSGIApplication(
[('/', MainPage),
('/sign', Guestbook)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
Recarregue a página para ver o formulário e tente enviar uma mensagem.
Esta versão possui dois manipuladores: MainPage, mapeado para o URL /, exibe um formulário da web. Guestbook, mapeado para o URL /sign, exibe os dados enviados pelo formulário da web.
O manipulador Guestbook possui o método post() em vez do método get(). Isso ocorre porque o formulário exibido por MainPage usa o método HTTP POST (method="post") para enviar os dados do formulário. Se por algum motivo for necessário um único manipulador para tratar ações GET e POST com o mesmo URL, você pode definir um método para cada ação na mesma classe.
O código do método post() obtém os dados do formulário de self.request. Antes de exibi-los de volta ao usuário, ele usa cgi.escape() para adicionar códigos de escape aos caracteres especiais de HTML aos seus equivalentes de entidade de caractere. cgi é um módulo da biblioteca Python padrão. Consulte a documentação do cgi para obter mais informações.
Nota: O ambiente do Google App Engine inclui a biblioteca Python 2.5 padrão inteira. Entretanto, nem todas as ações são permitidas. Os aplicativos do Google App Engine são executados em um ambiente restrito, que permite que o Google App Engine os adéqüe com segurança. Por exemplo, não são permitidas chamadas de baixo nível ao sistema operacional, operações de rede e algumas operações do sistema de arquivos. Nesses casos, é retornado um erro. Para obter mais informações, consulte O ambiente de execução do Python.
Agora que podemos coletar informações do usuário, necessitamos de um lugar para armazená-las e de uma maneira de recuperá-las.
Vá para Uso do armazenamento de dados.