如何从 Django 视图将变量传递给 SCSS

Posted

技术标签:

【中文标题】如何从 Django 视图将变量传递给 SCSS【英文标题】:How to pass variables to SCSS from a Django View 【发布时间】:2019-03-17 20:56:54 【问题描述】:

我有一个简单的问题,但找不到解决方案的文献。我想让用户在我的 Django 网站上选择夜间模式、白天模式、活力模式等。为此,我需要将该变量传递给我的 SCSS 文件。我该怎么做?如何将变量从 Django 视图传递到 SCSS 文件?我查看了this answer,但这并没有通过示例显示它,也不是关于 SCSS 文件。如果您能提供一个简短的示例以及您的答案以及相关文档页面,我将不胜感激。

【问题讨论】:

【参考方案1】:

要使用“皮肤”模式,您必须创建您的 css 主题文件,而不是传递 scss 变量,您必须传递您的网站必须导入的文件,例如

如果用户选择夜间模式,则导入 nightmode.css

如果用户选择lightmode,导入lightmode.css

【讨论】:

这可能有效。但是,这意味着我必须为每个“皮肤”制作不同的 .css 文件。对于一个简单的改变来说,听起来工作量太大了。我知道您可以将变量从 Ruby 传递到 Sass/SCSS 文件,在 Django 中也可能有一种方法可以做到这一点。 scss 文件必须被编译,它不像覆盖一个 css 文件,这就是为什么你不能简单地告诉 do scss 文件“改变这个变量的值”你必须有一个部署系统才能像这样工作,然后当你更新你的变量时,告诉你的部署运行一个任务管理器并编译你的文件。 那么问题就变成了:Python中是否有这样的任务管理器从用户那里获取变量并使用新的用户输入编译SCSS? 可以使用这个包github.com/andreyfedoseev/django-scss 并在用户输入时使用 Ajax 重新加载您的样式标签是一个解决方案吗?或者如果你不需要它是动态的,我认为这个包就是你需要的。

以上是关于如何从 Django 视图将变量传递给 SCSS的主要内容,如果未能解决你的问题,请参考以下文章

如何将javascript变量传递给django模板标签

Django将变量传递给模板

将变量从视图传递到表单 Django

如何从视图将值传递给 Django Form init 方法?

如何将变量从 CLI 程序传递到 Python 视图以更新 Django UI?

Django - 将模型名称从 url 传递给视图