简化在Django中使用PySCSS的过程。
项目描述
django-pyscss
一套工具,使在Django中使用pyScss变得更加容易。
安装
django-pyscss支持Django 1.4+和Python 2和3。
您可以从PyPI安装django-pyscss
pip install django-pyscss
为什么我们需要这个?
此应用程序在处理Django中的pyScss时简化了许多事情。它
重写导入系统以使用Django的staticfiles应用。这样,您可以从任何应用(或任何可由STATICFILES_FINDERS找到的文件)导入SCSS文件,而无需任何麻烦。
配置pyScss以使用staticfiles应用执行其图像功能(例如inline-image和sprite-map)。
它提供了一个django-compressor预编译过滤器类,因此您可以在不使用shell的情况下轻松使用pyScss与django-compressor。这还有额外的优势,即无需通过命令行参数配置pyScss,并且使pyScss发出的异常和警告能够向上冒泡到您的进程,从而使您真正了解发生了什么。
手动渲染SCSS
您可以从这样的字符串手动渲染SCSS
from django_pyscss import DjangoScssCompiler
compiler = DjangoScssCompiler()
compiler.compile_string(".foo { color: green; }")
您可以从这样的文件中渲染SCSS
from django_pyscss import DjangoScssCompiler
compiler = DjangoScssCompiler()
compiler.compile('css/styles.scss')
文件需要能够被静态文件查找器定位,才能被使用。
DjangoScssCompiler 类是 scss.Compiler 的子类,它注入了 DjangoExtension。正是 DjangoExtension 覆盖了导入机制。
DjangoScssCompiler 默认还开启了 CompassExtension,如果您想关闭它,可以这样操作
from django_pyscss import DjangoScssCompiler
from django_pyscss.extensions.django import DjangoExtension
compiler = DjangoScssCompiler(extensions=[DjangoExtension])
有关 DjangoScssCompiler 接受的选项列表,请参阅 pyScss 的 API 文档。
与 django-compressor 结合使用
django-pyscss 内置了对 django-compressor 的支持。您只需将其添加到您的 COMPRESS_PRECOMPILERS 设置中。
COMPRESS_PRECOMPILERS = (
# ...
('text/x-scss', 'django_pyscss.compressor.DjangoScssFilter'),
# ...
)
然后您就可以像使用 CSS 一样使用 SCSS。
{% compress css %}
<link rel="stylesheet" type="text/x-scss" href="{% static 'css/styles.css' %}">
{% endcompress %}
如果您想提供自己的编译器实例(例如,如果您想更改 DjangoScssCompiler 的一些设置),您可以继承 DjangoScssFilter。
# myproject/scss_filter.py
from django_pyscss import DjangoScssCompiler
from django_pyscss.compressor import DjangoScssFilter
class MyDjangoScssFilter(DjangoScssFilter):
compiler = DjangoScssCompiler(
# Example configuration
output_style='compressed',
)
# settings.py
COMPRESS_PRECOMPILERS = (
# ...
('text/x-scss', 'myproject.scss_filter.MyDjangoScssFilter'),
# ...
)
运行测试
您可以通过运行以下命令来运行测试。
$ python setup.py test
请注意,这将自动将 tmp/static/ 收集到静态中,因为一些测试需要静态文件已被收集。
变更日志
2.0.3 (2023-08-30)
支持 Django 4.2。停止支持 Python 2。
2.0.2 (2015-04-29)
修复了相对导入的 bug [#34, #35 r1chardj0n3s]
2.0.1 (2015-04-23)
显式依赖 pathlib,而不是假设 pyScss 将需要它。 [#33]
修复了 DEBUG 为 False 但尚未运行 collectstatic 的情况(在测试中很常见)。
2.0.0 (2015-04-22)
添加了对 pyScss 1.3 和 Python 3 的支持。
停止支持 pyScss 1.2
升级路径
如果您只是使用 django-compressor 集成,您不需要升级任何内容。
如果您直接使用 DjangoScss 类,它已被 DjangoScssCompiler 类替换。编译 CSS 的 API 也已更改,例如,要从字符串编译,之前您会这样做
>>> from django_pyscss.scss import DjangoScss
>>> compiler = DjangoScss()
>>> compiler.compile(".foo { color: red; }")
现在接口是这样的
>>> from django_pyscss import DjangoScssCompiler
>>> compiler = DjangoScssCompiler()
>>> compiler.compile_string(".foo { color: red; }")
您可以在 pyScss API 文档 中了解更多关于新 API 的信息。
1.0.0 - 2014-02-11
发布 django-pyscss。