我不得不想出一個相當複雜的設置來爲用戶啓用基於數據庫的樣式選項。用戶在django admin後臺輸入樣式(如背景顏色,字體等)。帶動態LESS文件的Django Compressor引發了一個FilterError(err)
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看起來有點
我被渲染一個模板視圖爲純文本視圖,像這樣創建一個動態的LESS文件喜歡這個。這需要用戶在管理後臺進入數據庫造型項:
@CIBaseColor: {{ dynamic_styles.ci_base_color }};
@CIBaseFont: {{ dynamic_styles.ci_base_font }};
...etc...
現在我包括此動態較少的文件在我main.less文件與其它普通的靜態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-compressor對其進行壓縮時出現問題。
我得到以下錯誤:
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[[email protected][22mimport url(http://127.0.0.1:8000/dynamic_styles/custom_stylesheet.less);[39m[27m
[90m14 [39m[0m
有沒有人經歷過的問題,Django的壓縮機這樣呢?它是否有像這樣動態創建的文件有問題?絕對網址可能會成爲問題嗎?
你能想到另一個解決方案獲得動態生成較少的文件與Django壓縮機工作?