пятница, 30 ноября 2012 г.

django-lfs: добавляем произвольные формы в Page

django-lfs включает в себя модуль Page для того , чтобы пользователи могли создавать статические страницы у себя на сайтах...

Иногда надо, чтобы статическая страница включала в себя какую-нибудь форму. Ничего не мешает, конечно,  в html-код этой страницы впихнуть нужную конструкцию <form>...</form>  через wisywig, добавить соответствующий обработчик в urls и views,  а затем ненадолго успокоиться...
.. до тех пор , пока пользователь сайта в manage интерфейсе случайно не испохабит этот код формы , так что эта хрупкая конструкция перестанет работать...

Вот что я придумал, чтобы оживить модуль Page условно произвольными формами:

1. список форм

Создаем модуль (py-файл ) с классами нужных нам на данный момент форм

2. обновление модели

Добавляем в модель Page списочное поле , значениями списка которых являются классы из нашего набора форм

3. обработчики форм

для каждой из набора форм создаем по обработчику, в котором будет логика обработки данного конкретного класса форм

4. актуализируем page_view

переделываем page_view так, чтобы брать из модели текущий используемый класс формы и передаем в шаблон соответствующую форму, созданную на лету

тут же , если POST, вызываем обработчик формы (для каждого класса формы свой)...

обработчик делаем такими, что они выполняют определенную логику и по необходимости меняют контекст, возвращая управления в вызывающую их вьюху (page_view)...

Таким образом, мы получаем возможность добавления произвольной формы из нашего набора в произвольную статическую страницу (Page) в django-lfs, что делает этот фреймворк для имагов гораздо более гибким...

p.s. код и тонкости (которые есть всегда) не публикую... если кого-то заинтересовала реализация этого, пишите - охотно поделюсь ....


p.p.s. ранее писал о том, что планирую реализовать полноценный конструктор форм для django... намерения те же, очертания приложения уже четче в мыслях.. но пока не хватает времени, чтобы спокойно "сесть и сделать"...

Комментариев нет:

Отправить комментарий

Если Вы нашли ошибку у автора, у Вас есть вопрос или просто хотите поделиться чем-то полезным, то пишите - не стесняйтесь..