我不得不拿出相当复杂的设置,使用户基于数据库的时尚选择。 用户输入的风格(如背景颜色,字体,等等)在Django管理后台。
我被渲染模板视图像这样的纯文本视图中创建一个动态的LESS文件:
views.py:
class PlainTextView(TemplateView):
"""
Write customized settings into a special less file to overwrite the standard styling
"""
template_name = 'custom_stylesheet.txt'
def get_context_data(self, **kwargs):
context = super(PlainTextView, self).get_context_data(**kwargs)
try:
#get the newest PlatformCustomizations dataset which is also activated
platform_customizations = PlatformCustomizations.objects.filter(apply_customizations=True).order_by('-updated_at')[0]
except IndexError:
platform_customizations = ''
context.update({
'platform_customizations': platform_customizations,
})
return context
def render_to_response(self, context):
return super(PlainTextView, self).render_to_response(context, content_type='plain/text')
模板custom_stylesheet.txt看起来有点像这样。 这需要用户在管理后台进入数据库造型条目:
@CIBaseColor: {{ dynamic_styles.ci_base_color }};
@CIBaseFont: {{ dynamic_styles.ci_base_font }};
...etc...
现在,我包括此动态减档与其他普通的静态LESS文件我main.less文件。 像这样:
main.less:
@import "bootstrap_variables.less";
//this is the dynamicly created custom stylesheet out of the dynamic_styles app
@import url(http://127.0.0.1:8000/dynamic_styles/custom_stylesheet.less);
//Other styles
@import "my_styles.less";
这种设置工作正常。 动态变量从我的数据库获取渲染到模板和LESS编译我的所有文件少一起。
推代码到我的产品设置,我编译LESS服务器端和Django的压缩机压缩它,当我有一个问题。
我得到以下错误:
FilterError: [31mFileError: 'http://127.0.0.1:8000/dynamic_styles/custom_stylesheet.less' wasn't found.
[39m[31m in [39m/home/application/***/media/static-collected/styles/less/main.less[90m:13:0[39m
[90m12 //this is the dynamicly created custom stylesheet out of the dynamic_styles app[39m
13 [7m[31m[1m@[22mimport url(http://127.0.0.1:8000/dynamic_styles/custom_stylesheet.less);[39m[27m
[90m14 [39m[0m
有没有人经历过Django的压缩机这样的问题呢? 是否有这样的动态创建的文件的问题? 请问绝对URL是一个问题?
你能想到另一种解决方案获取动态生成的文件少用Django的压缩机工作?