使在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预编译过滤器类,这样您就可以轻松地将pyScss与django-compressor一起使用,而无需打开shell。这还有一个额外的优点,即无需通过命令行参数配置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 (未发布)
尚未有任何更改。
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。