我使用了不同的方法。我现在正在使用离线压缩,无论如何这对于多服务器部署来说更快更好。
我为用户提供了一个界面来更改某些 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)