как поделиться данными конфигурации между Javascript, Python и CSS в моем приложении Django?

У меня есть Javascript, шаблоны Django, код Python и CSS, которые работают с одними и теми же данными конфигурации. Где лучше всего его настроить?

В частности, у меня есть виджет входа на стороне браузера в Javascript, который управляет встроенным приложением Java. Когда пользователь закончит, Javascript запрашивает у Java-апплета изображение результата, которое будет встроено в HTML. Пользователь может указать, должно ли изображение быть маленьким, средним или большим. Это изображение и выбор отправляются через вызов AJAX в мое приложение Django, которое выполняет некоторую проверку ввода. Когда отображается HTML, он включает мой CSS, в котором есть специальный [href ^ = http://internal.server] разметка, чтобы эти изображения отображались иначе, чем другие изображения.

Пока кто-то задал аналогичный вопрос , ответы были либо: «используйте DSL», либо «используйте формат, подобный XML или JSON». Ни один из них не работает с CSS.

Я придумал два решения:

  • поместите данные в Python и создайте HTML с помощью формы / шаблона Django. Также попросите Django динамически генерировать конфигурацию Javascript и генерировать этот CSS.

Мне это не нравится, потому что я предпочитаю обрабатывать весь свой Javascript и CSS статически.

  • Представьте этап сборки, на котором данные конфигурации применяются к шаблону для создания соответствующих файлов Javascript, HTML, CSS и Python.

Это усложняет задачу, потому что у меня будут специальные файлы «* .in» или подобные файлы, которые создают настоящие файлы, и всем придется следить за тем, чтобы они знали, какие файлы нужно редактировать.

Что вы делаете?


person Andrew Dalke    schedule 07.12.2010    source источник


Ответы (2)


Используйте JSON. Создавайте CSS динамически, используя кеширование для уменьшения нагрузки.

person Ignacio Vazquez-Abrams    schedule 07.12.2010
comment
Куда идет JSON - в моем каталоге static / js? Достигает ли мое приложение Django доступа к каталогу для получения конфигурации? Могу ли я выполнить перезагрузку Django во время разработки, если конфигурация JSON изменится, и если да, то как? - person Andrew Dalke; 07.12.2010
comment
Закончил динамическое создание Javascript и CSS. Комментарий @gnibbler напомнил мне, что у меня всего несколько десятков пользователей в локальной интрасети, поэтому производительность даже без кеширования не будет проблемой. - person Andrew Dalke; 09.12.2010

Я думаю, что действительно хорошим подходом было бы эффективно иметь DSL, выраженную косвенно через структуры данных JSON, выложенные с использованием какого-то соглашения о кодировании, в сочетании с отдельным этапом сборки, который использовал это для создания необходимых файлов конфигурации. Если бы инструмент (ы) для этого шага сборки был написан на Python, создание, поддержка и улучшение его или их должны были быть относительно легкими.

person martineau    schedule 07.12.2010