Estoy escribiendo un sitio web basado en Django que permite a los usuarios seleccionar un esquema de color a través de una interfaz de administración.¿Cómo crear un CSS personalizado "sobre la marcha" según la configuración de la cuenta en un sitio de Django?
Ya tengo procesadores de middleware/contexto que vinculan la solicitud actual (basada en el dominio) a la cuenta.
Mi pregunta es cómo servir dinámicamente el CSS con el esquema de color personalizado de la cuenta.
veo dos opciones:
añadir un bloque de CSS a la plantilla base que anula los estilos w/variables pasadas a través de un procesador de contexto.
Utilice una URL personalizada (por ejemplo, "/ static/dynamic/css/< id_sitio web//styles.css") que se enruta a una vista que toma todos los valores necesarios y crea el archivo css.
me conformo con cualquiera de las opciones, pero me preguntaba si alguien más por ahí se ha ocupado de problemas similares y podría dar alguna idea de "Buenas Prácticas".
Actualización: Me inclino por la opción número 2, ya que creo que esto permitirá un mejor almacenamiento en caché en el camino. Por lo tanto, es dinámico la primera vez, se almacena en Memcache (o lo que sea) y se invalida cuando un usuario actualiza su configuración en el sitio de administración.
Actualización: En primer lugar, me gustaría agradecer a todos por sus sugerencias hasta el momento. Todas las respuestas hasta ahora se han centrado en la generación de archivos estáticos. Aunque esto funcionaría muy bien en la producción, se siente como una gran carga durante el desarrollo. Si quisiera agregar un nuevo elemento para ser peinado, o modificar los estilos existentes, tendría que pasar y volver a crear cada uno de los archivos css. Claro, esto podría hacerse con un comando de administración, pero simplemente no siento que valga la pena. Hacerlo de manera dinámica agregaría 1 tal vez 2 consultas a cada carga de página, lo cual es algo que no me preocupa en esta etapa. Todo lo que necesito saber es que en algún momento podré guardarlo en caché sin volver a escribir todo el asunto.
¿necesita estar sobre la marcha? la personalización podría producir un archivo .css que se almacena por usuario, y las páginas podrían apuntar a ese archivo .css – drfrogsplat
@drfrogsplat: Gracias por el comentario. El problema con este enfoque en mi situación es si tuviera que agregar un nuevo estilo que tendría que pasar, eliminar y volver a crear cada archivo CSS. – sdolan