私は別のアプローチを使用しました。現在、オフライン圧縮を使用しています。これは、とにかくマルチサーバー展開に適しています。
特定のcss以下の値を変更するためのインターフェースをユーザーに提供します。これらのcss/less値をデータベーステーブルに保存して、ユーザーが簡単に編集できるようにします。
新しいcss/less値をフロントエンド(コンパイルされたcssファイル)で使用できるようにするには、ユーザーがlessファイルに入力した値をディスクに書き込んでコマンドを再実行しpython manage.py compress
ます。
このようにして、コンパイルされたコンプレッサーファイルが生成され、ユーザーが無効なlessコードを入力した場合、コンパイルエラーが発生し、コンプレッサーは停止して古いcssファイルを保持します。
これが私のsave()メソッドです:
def save(self, *args, **kwargs):
#write the less file to the file system
#everytime the model is saved
try:
file_location = os.path.join(settings.STATIC_ROOT, 'styles', 'less', 'custom_styles.less')
with open(file_location, 'w') as f:
f.write(render_to_string('custom_styles/custom_stylesheet_tmpl.txt', {'platform_customizations': self}))
except IOError:
#TODO show error message to user in admin backend and via messaging system
raise IOError
#re-run offline compress command in prod mode
management.call_command('compress')
super(PlatformCustomizations, self).save(*args, **kwargs)