我正在编写一个 View ,为投票应用程序创建自定义 css 文件(用户选择他们的颜色,然后保存一个 css 文件,以备在他们的投票中使用)。这是一个很大的 css 文件(大约 1k 行)。
我试图避免将一个巨大的字符串列表拼接在一起,而我的变量充当分隔符。是否有一个上下文处理器可以通过我的 View 访问,我可以在其中传递 base.css 文件和变量字典(有点像 django.shortcuts.render
),然后检索结果字符串和通过ORM将其保存为文件? (我有一个带有专用 FileField
的 CSS 模型)
我更希望能够生成然后存储静态文件,而不是通过上下文处理器为每个页面命中生成动态 css 文件。
最佳答案
正如@DanielRoseman 所建议的,实际上可以通过内置的 django 上下文处理器运行 css 文件。首先,将 scss $variables
替换为 sass 文件中的类似内容并重新编译:
@function myvariable(){
@return unquote("{{ cssform.myvariable.value }}");
}
然后将它传递给 View 中的上下文处理器:
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
关于python - python/django 中巨型 heredoc 的上下文替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226785/