Небольшой “хинт” как при помощи Pylons обрабатывать CSV файлы, отправленные из формы.
При проектировании любого проекта, через определенное время, встает проблема маштабируемости, конечно если вы не пишите сайт-визитку или что то подобное. Проект может состоять из одного большого монолитного ядра с множеством контроллеров, сотнями или даже тысячами таблиц и бессчетным количеством разных шаблонов, библиотек итд итп. Под ядром подразумевается та часть проекта (pylons), которую либо нельзя изменить совсем, либо это потребует очень больших усилий. Для того что бы создать гибкий и легко масштабируемый веб (и не только) проект, необходимо иметь небольшое ядро, которое будет выполнять минимальный функционал соответствующий логически завершенной программе. Остальные функции, пусть даже улучшающие программу, нужно выносить за пределы ядра. Вообще я знаю только два способа решения этой проблемы:
Иногда необходимо написать скрипт который выполняется из консоли и использует окружение проекта на Pylons. Копипастю простой пример с pylonshq. Так-как там есть привычка периодически удалять информацию.
Иногда необходимо поднять демо версию своего проекта для тестов. Склонируем
наш git
проект на сервер где будет демо:
Продолжение статьи готовим Pylons + WTForms. Рассмотрим как создать свой класс для валидации. Здесь можно найти стандартные валидаторы http://wtforms.simplecodes.com/docs/0.6/validators.html
WTForm простая, но довольно удобная библиотека для создания форм. И еще WTForm очень похожа на формы в Django - одно из немногого что в джанге сделано хорошо. Посмотрим как это работает с Pylons. Для удобства будем хранить формы отдельно:
Для своих REST контроллеров можно использовать, формы FormAlchemy.
Для SQLAlchemy существуют интерфейсы управления моделями(что-то типа админки). Как минимум их 2, это Rum и formalchemy.ext.pylons.
Статья по сути вольный перевод PylonsTemplates: extra Paster templates for Pylons apps с моими дополнениями.
В Pylons, в шаблоны есть возможность вставить CSS или JS при помощи
stylesheet_link()
и
javascript_link()
. Но существует расширение
MinificationWebHelpers которое позволяет также удобно добавлять javascript
файлы.