Итак, я пишу веб-сайт на основе Django, который позволяет пользователям выбирать цветовую схему через интерфейс администрирования.
У меня уже есть промежуточное программное обеспечение / контекстные процессоры, которые связывают текущий запрос (на основе домена) с учетной записью.
Мой вопрос заключается в том, как динамически обслуживать CSS с помощью пользовательской цветовой схемы учетной записи.
Я вижу два варианта:
Добавить блок CSS в базовый шаблон, который переопределяет стили с переменными, передаваемыми через процессоры контекста.
Используйте пользовательский URL (например, "/ static / dynamic / css / /styles.css"), который перенаправляется в представление, которое собирает все необходимые значения и создает файл css.
Я согласен с любым вариантом, но мне было интересно, сталкивался ли кто-нибудь еще с подобными проблемами и мог бы дать некоторое представление о «передовой практике».
Обновление : Я склоняюсь к варианту № 2, так как думаю, что это позволит улучшить кэширование в будущем.Таким образом, он динамический в первый раз, сохраняется в memcache (или где-либо еще) и становится недействительным, когда пользователь обновляет свои настройки на сайте администратора.
Обновление : Во-первых, я хотел быспасибо всем за их предложения до сих пор.Все ответы до сих пор были сосредоточены вокруг создания статических файлов.Хотя это отлично работает на производстве, во время разработки это кажется огромным бременем.Если бы я хотел добавить новый элемент для стилизации или настроить существующие стили, мне пришлось бы пройтись и воссоздать каждый файл CSS.Конечно, это можно сделать с помощью команды управления, но я просто не чувствую, что это того стоит.Выполнение этого динамически добавило бы 1, возможно, 2 запроса к каждой загрузке страницы, и на этом этапе я не беспокоюсь.Все, что мне нужно знать, это то, что в какой-то момент я смогу кешировать его, не переписывая все это.