跳转到主要内容

简化在Django中使用PySCSS的过程。

项目描述

django-pyscss

一套工具,使在Django中使用pyScss变得更加容易。

Build Status Coverage Status

安装

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。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

django-pyscss-2.0.3.tar.gz (18.2 kB 查看哈希值)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面