В сети появился еще один блог :). Надеюсь будет кому-то полезным. Писать буду про то, с чем сталкиваюсь ковыряя очередную свою поделку, но в основном всё будет крутиться вокруг Python, Linux и web-штучек в целом.
В последнее время взялся за свой первый в жизни сайт =) Это морда к сервру Ragnarok для моего любительского игрового проекта
simhost.org. В качестве средства решения задачи выбрал web.py, т.к. по заверениям авторов он простой, как три копейки и ни в чем не ограничивает свободу выбора. В итоге два дня убил на лазание по инету, ознакомление с туториалами и немногочисленными примерами. Время провел с пользой: пощупал вживую CSS, вдоволь начитался споров про HTML vs XHTML, начал осиливать vim (это моя, наверное, уже пятая попытка, но на этот раз зашел дальше всего) и вообще нагрузил себя новой информацией по самую макушку. В итоге web.py оказался действительно простым и действительно гибким.
В web.py все данные от пользователя можно получить через
web.input(), который возвращает словарь (если быть точнее, то ThreadedDict), но возникла небольшая заминка: как разделить переменные полученные в теле POST запроса от тех, что переданы через URL. Если это сделать, то можно более четко определить, что ты хочешь и чего ты не хочешь от программы. В частности при валидации форм мне видется это полезным.
Чтобы наглядно показать смешение переменных приведу такой синтетический пример (все подписи к полям выкинул для наглядности).
<form name="login" method="post" action="/test?a=555&b=666">
<input type="text" name="login" id="login"/>
<input type="password" id="password" name="password"/>
<input type="submit"/>
</form>
Как видите, данные с формы отправляются методом
POST по URL
/test?a=555&b=666. В итоге в обработчике /test, выполнив
web.input() мы получим словарь вида:
{
'name':'testname',
'password':'testpass',
'a':'555'
'b':'666'
}
Конечно, в данном случае мы сами смешали переменные, но согласитесь, что обрабатывая результат заполнения формы, мы ожидаем только переменные из
POST, так давайте только их и обрабатывать, просто на всякий случай, чтобы спать спокойно.
Как часто бывает в мире OpenSource лучшая документация это код. В моём недолгом освоении web.py это правило сработывало неоднократно, так получилось и на этот раз. Код
web.input() находится в
web/webapi.py, при желании можете посмотреть сами, но результатом моих поисков стало следующее знание:
web.input(_method='post') и
web.input(_method='get') выдадут только переменные переданные методом POST и GET соответственно.
На этом всё. В следующем сообщении расскажу про валидатор форм, выполненный ввиде декоратора цельнопизженного из Pylons. Правда эта конструкция в моих руках может и не взлететь, тогда расскажу о чем-нибудь другом.
1 комментарий:
Будет-будет полезен :-)
Очень понравились статьи про Git. Хотелось бы их больше - несмотря на моё пристрастие к SVN, распределённые системы контроля версий всё-таки мощнее.
Хорошо бы что-нибудь для новичков написать, типа "быстрый старт в git". Такой информации очень мало и она очень ценна.
Отправить комментарий