В этой статье мы вам поведаем о вкусном и полезном шаблонизаторе, мучительным формам и о базах данных, которые обогатились витамином SQL.
Шаблонизация
Писать HTML код внутри кода Python - звучит ещё куда не шло. Но вот писать на Python внутри HTML - это уже настоящий абсурд. К счастью, Web.Python вас спасает от таких явлений. Давайте создадим директорию для наших шаблонов и назовём её templates. В ней создаём файл index.html и пишем туда привычный HTML-код:
Код
<em>Hello</em>, world!
Да-да, мы уже вас достали приветствием мира, поэтому можете написать туда, что хотите. Кстати, вы также можете использовать не HTML, а язык шаблонизатора Python, он не обидится:
Код
$def with (name) $if name: I just wanted to say <em>hello</em> to $name. $else: <em>Hello</em>, world!
Теперь вернёмся к нашему скрипту и допишем под первой строкой следующий код:
Код
render = web.template.render('templates/')
Это заставит Python зашевелить обработчик шаблонов. Теперь заменяем всё внутри index.GET на следующее:
Код
name = 'Bob' return render.index(name)
Теперь при входе на сайт скрипт будет приветствовать не мир, а некого Боба. Сейчас давайте сделаем так, чтобы сайт приветствовал того, кто зашёл на сайт. А если он своё имя ввести не захочет - по прежнему кричал "привет" всему миру. Делается это при помощи web.input:
Код
i = web.input(name=None) return render.index(i.name)
Теперь сделаем так, чтобы страница принимала эти самые input`ы. Для этого в нашем списке URL заменяем инструкцию про index на:
Код
'/(.*)', 'index'
И сменим назначения index.GET на:
Код
def GET(self, name): return render.index(name)
Заходим на наш сайт. Мы увидим приветствие в адрес мира. Теперь зайдём, например, не в корень сайта, а на
Код
/?name=Joe
. Скрипт скажет привет Джо.
Базы данных
Необходима установленная база данных. Это может быть MySQL или PostreSQL. Создаём новый объект для базы данных:
Код
db = web.database(dbn='postgres', user='username', pw='password', db='dbname')
Если у вас база данных MySQL, а не PostreSQL, то postgres заменяем на mysql. Имя пользователя, пароль и базы данных соответственно тоже меняем на свои. Если же вы с базами данных вообще не знакомы и вам неведомо, что написано выше, рекомендуем немедленно ознакомиться здесь. Теперь создадим в вашей базе данных таблицу:
Код
CREATE TABLE todo ( id serial primary key, title text, created timestamp default now(), done boolean default 'f' );
И добавим туда строку:
Код
INSERT INTO todo (title) VALUES ('Learn web.py');
И внутри index.GET заменяем весь код на этот:
Код
def GET(self): todos = db.select('todo') return render.index(todos)
И вернём назначение URL index на родину:
Код
'/', 'index',
Сейчас надо заменить код в шаблоне index.html:
Код
$def with (todos) <ul> $for todo in todos: <li id="t$todo.id">$todo.title</li> </ul>
Заходим в корень сайта и видим текст: Learn web.py.
Если вы знакомы с курсом php, то уже понимаете, о чём речь. Если же нет, то знайте: мы даём пользователям возможность самим вводить данные прямо на сайта. Проще говоря - форма, подобная той, которую вы заполняете на сайтах, вводите информацию. Список URL тоже заменяем:
Код
'/', 'index', '/add', 'add'
И добавляем ещё один класс для обработки введённой информации:
Код
class add: def POST(self): i = web.input() n = db.insert('todo', title=i.title) raise web.seeother('/')
Теперь вы можете с чистой совестью отправлять POST запросы при помощи формы. web.input опять вам в помощь: его используют и GET, и POST запросы. Дело в том, что обработчику совершенно всё равно, как передан запрос. Его интересуют параметры и значения. Метод передачи - дело клиента, который передаёт, и сервера, который принимает. db.insert заносит значения в базу данных. На этом второй урок серии Создаем свой сайт\игру на Python подходит к концу. На следующем уроке мы создадим небольшой блог на языке Python. Приятного кодинга!
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Создаем свой сайт/игру на Python. Часть 2», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]