我正在编写一个为轮询应用程序创建自定义css文件的视图(用户选择颜色,然后保存css文件,准备好在他们的轮询中使用)。它是一个很大的CSS文件(约1k行)。
我试图避免将一个巨大的字符串列表拼接在一起,我的变量充当了分隔符。是否可以通过我的视图访问上下文处理器,我可以只传递base.css文件和变量字典(类似于django.shortcuts.render
),然后检索生成的字符串并将其保存为文件通过ORM? (我有一个带有专用FileField
的CSS模型)
我希望能够生成然后存储静态文件,而不是通过上下文处理器为每个页面命中生成动态css文件。
答案 0 :(得分:0)
正如@DanielRoseman所说,实际上可以通过内置的django上下文处理器运行css文件。首先,在sass文件中将scss $variables
替换为类似的内容并重新编译:
@function myvariable(){
@return unquote("{{ cssform.myvariable.value }}");
}
然后将其传递到您视图中的上下文处理器:
if request.method == "POST":
form = CSSForm(request.POST)
if form.is_valid():
t = TemplateResponse(request, 'base.css', {"cssform": form})
t.render()
css_string = t.content
#now do something with your css_string