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