Вольный перевод http://webpy.org/docs/0.3/tutorial
Введение
Итак, Вы знаете Python и хотите создать сайт. При помощи web.py, Вы сможете легко это сделать! Если вы хотите пройти данный учебник полностью, то вам необходимо установить Python, web.py, flup, psycopg2, и Postgres (или любую другую базу и python адаптер к ней).
Обработка URL
Наиболее важная часть любого вебсайта - это структура его URL. Эти адреса - это не только то, что видят посетители вашего сайта и отправляют по почте друзьям, они также определяют ментальную модель вашего сайта. На популярных сайтах, наподобие del.icio.us, URL'ы являются частью пользовательского интерфейса. web.py позволяет легко работать со сложными URL'ми.
Чтобы начать работу с web.py приложением, создайте текстовый файл (назовём его code.py) и введите:
import web
Так мы импортируем web.py модуль.
Теперь мы должны указать web.py нашу структуру URL'ов. Давайте начнём с чего-то простого:
Первая часть - это регулярное выражение, которое соответствует такими адресами, как /, /help/faq, /item/(\d+), и др. (\d+ будет соответствовать последовательности цифр). Скобки вокруг \d+ необходимы для удобного дальнейшего использования этих цифр. Вторая часть - это имя класса, который будет обрабатывать запрос. Например, index, welcomes.hello (то есть класс hello из модуля welcomes) или 'get_\1'. \1 заменяется на первое совпадание выделенного регулярного выражения. Все остальные элементы выделенного регулярного выражения передаются в класс-обработчик.
То есть, код выше обозначает, что мы хотим обрабатывать адрес / (главная страница) классом с именем index. Теперь нам надо создать приложение с указанием urls адресов.
1 app = web.application(urls, globals())
Этой строкой, мы создали приложение с адресами, перечисленными выше и использующее классы из глобального пространства имён данного файла.
Отличие GET и POST запросов
Теперь нам надо создать сам index класс. Большинство пользователей Интернета не замечают, что их браузер общается с WWW при помощи HTTP протокола. Детали не важны, но базовая идея состоит в том, что пользователи просят веб-сервер применить определённые действия (GET, POST и др.) по определённым адресам (например /, или /foo?f=1).
GET запрос является самым популярным, он используется для получения содержания страниц. Когда мы вводим в браузере python.su, то браузер отправляет GET / на сервер.
Вторым по популярности является POST запрос. Он наиболее часто используется при оправке данных, через веб-формы, например запрос на покупку чего-то. Это является ключевым отличием от GET. GET адреса могут быть проиндексированы поисковыми системами, что предпочтительно для большинства страниц, но мы определённо не хотим, чтоб так происходила обработка заказов (представьте, что Google попытался купить всё на вашем сайте! )
В web.py данные методы разделены явным образом:
Теперь GET метод будет вызываться каждый раз, когда будет происходить запрос по адресу /.
Хорошо, теперь закончим наше первое приложение строкой, которая запустит внутренний веб-сервер web.py:
1 if __name__ == "__main__": app.run()
Стоит отметить, что для написания минимального веб-приложения, нам понадобилось лишь 5 строк кода.
Запуск сервера
Если в вашей командной строке вы введёте:
$ python code.py http://0.0.0.0:8080/
Теперь у вас запущено веб-приложение со своим веб-сервером. Зайдите по адресу http://127.0.0.1:8080/ и вы увидите "Hello, world!". (Вы можете добавить IP адрес/порт после code.py, чтоб контролировать где запущено сервер. Также вы можете запустить fcgi или scgi сервер).
Вы можете задать определённый порт в строке запуска.
$ python code.py 1234