• Официальный сайт SDK
  • Сайт с примерами кода

Управление формами через webapp

Для того, чтобы предоставить пользователям возможность отправлять свои сообщения, нам необходимо использовать механизм для обработки введенной ими информации через форму. Фреймворк webapp позволяет очень просто обрабатывать полученные данные.

Управление формами через webapp

Замените содержимое файла helloworld/helloworld.py следующим:

CmltcG9ydCBjZ2kKaW1wb3J0IHdzZ2lyZWYuaGFuZGxlcnMKZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBpbXBvcnQgdXNlcnMKZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCmNsYXNzIE1haW5QYWdlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CmRlZiBnZXQoc2VsZik6CnNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCIiIgombHQ7aHRtbCZndDsKJmx0O2JvZHkmZ3Q7CiZsdDtmb3JtIGFjdGlvbj0iL3NpZ24iIG1ldGhvZD0icG9zdCImZ3Q7CiZsdDtkaXYmZ3Q7Jmx0O3RleHRhcmVhIG5hbWU9ImNvbnRlbnQiIHJvd3M9IjMiIGNvbHM9IjYwIiZndDsmbHQ7L3RleHRhcmVhJmd0OyZsdDsvZGl2Jmd0OwombHQ7ZGl2Jmd0OyZsdDtpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTaWduIEd1ZXN0Ym9vayImZ3Q7Jmx0Oy9kaXYmZ3Q7CiZsdDsvZm9ybSZndDsKJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7IiIiKQpjbGFzcyBHdWVzdGJvb2sod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKZGVmIHBvc3Qoc2VsZik6CnNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCcmbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDtZb3Ugd3JvdGU6Jmx0O3ByZSZndDsnKQpzZWxmLnJlc3BvbnNlLm91dC53cml0ZShjZ2kuZXNjYXBlKHNlbGYucmVxdWVzdC5nZXQoJ2NvbnRlbnQnKSkpCnNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCcmbHQ7L3ByZSZndDsmbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1sJmd0OycpCmRlZiBtYWluKCk6CmFwcGxpY2F0aW9uID0gd2ViYXBwLldTR0lBcHBsaWNhdGlvbigKWygnLycsIE1haW5QYWdlKSwKKCcvc2lnbicsIEd1ZXN0Ym9vayldLApkZWJ1Zz1UcnVlKQp3c2dpcmVmLmhhbmRsZXJzLkNHSUhhbmRsZXIoKS5ydW4oYXBwbGljYXRpb24pCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Cm1haW4oKQo==

После обновления страницы, вы увидите новую форму. Попробуйте отправить в ней какое-нибудь сообщение.

Текущая версия нашего приложения теперь содержит два обработчика: старый MainPage, который указывает на корневой URL /, и новый обработчик Guestbook, указывающий на URL /sign, который отображает данные, отправленные через нашу форму.

Обратите внимание, что обработчик Guestbook вместо метода get() содержит метод post(). Это сделано специально, так как отображаемая через MainPage форма использует запрос HTTP POST (method="post") для отправки данных серверу. Если по каким-нибудь причинам одному и тому же обработчику запросов потребуется взаимодействовать с обоими типами запросов GET и POST, можно будет определить отдельные методы для каждого из типов в одном классе.

Метод post() получает данные через объект self.request. До того, как он обратно отобразит эти данные пользователю, мы воспользуемся функцией cgi.escape() для конвертации спецсимволов HTML разметки в обычный текст. cgi это стандартный модуль библиотеки языка Python; вы можете обратиться к документации cgi для дополнительной информации.

Примечание: В состав среды разработки App Engine включена стандартная библиотека языка Python версии 2.5. Однако, некоторые ее функции заблокированы. Для того, чтобы система смогла безопасно масштабировать приложения, они выполняются ограниченной среде. К примеру, использование низкоуровневых функций операционной системы, сетевых операций, запись файлов не разрешены, они приведут к ошибке в приложении. Для дополнительной информации о среде выполнения смотрите раздел Среда выполнения языка Python.

Далее...

Теперь мы научились получать информацию от пользователя и затем ее отображать.

Перейти к Использование хранилища.