将SASS/SCSS与Django集成

7

我希望在Django应用程序中使用SASS/SCSS。

我按照链接https://bitbucket.org/synic/django-sass的指示进行操作。我使用sudo pip install sass安装了SASS。

当我运行Python manage.py runserver时,出现以下错误:

'sass'不是有效的标签库:未找到模板库sass,请尝试django.templatetags.sass

有人能帮帮我吗?!


你在那个链接上完成了第一步吗? - Daniel Roseman
是的,我在已安装应用程序中添加了'sass',我使用sudo pip install sas进行了安装。当我执行syncdb时,一切正常,但当我运行runserver时,出现了这个错误。 - CRS...
4个回答

2

正如您所述,我已经下载并安装了该软件包。但是我仍然遇到了这个问题。 - CRS...

0

这是我的自制开箱即用解决方案

  1. 安装 LibsassWatchdog

    pip install libsass watchdog
    
  2. 创建一个名为core的应用

    python manage.py startapp core
    

core/sass.py

import os
import time
import site
import sass
import threading
from pathlib import Path
from django.apps import apps
from django.conf import settings
from watchdog.observers import Observer
from watchdog.events import FileClosedEvent


def compiler():
    packageFolders = [
        site.getusersitepackages(),
        *[path for path in site.getsitepackages()],
    ]

    staticFolders = settings.STATICFILES_DIRS.copy()
    staticFolders += [
        os.path.join(app.path, "static") for app in apps.get_app_configs()
    ]

    compileFolders = staticFolders.copy()
    for staticFolder in staticFolders:
        for packageFolder in packageFolders:
            if Path(staticFolder).is_relative_to(packageFolder):
                if staticFolder in compileFolders:
                    compileFolders.remove(staticFolder)

    if settings.DEBUG:

        def watcher(path):
            class Event(FileClosedEvent):
                def dispatch(self, event):
                    filename, extension = os.path.splitext(event.src_path)
                    if extension == ".scss":
                        time.sleep(0.5)
                        for d in compileFolders:
                            if os.path.isdir(d):
                                try:
                                    sass.compile(
                                        dirname=(d, d),
                                        output_style="expanded",
                                        include_paths=staticFolders,
                                    )
                                except sass.CompileError as error:
                                    print(error)

            event_handler = Event(path)
            observer = Observer()
            observer.schedule(event_handler, path, recursive=True)
            observer.start()
            try:
                while True:
                    time.sleep(1)
            except KeyboardInterrupt:
                observer.stop()
            observer.join()

        for d in compileFolders:
            if os.path.isdir(d):
                try:
                    sass.compile(
                        dirname=(d, d),
                        output_style="expanded",
                        include_paths=staticFolders,
                    )
                except sass.CompileError as error:
                    print(error)
                thread = threading.Thread(target=watcher, args=(d,), daemon=True)
                thread.start()
    else:
        d = settings.STATIC_ROOT
        if os.path.exists(d):
            try:
                sass.compile(
                    dirname=(d, d),
                    output_style="expanded",
                    include_paths=staticFolders,
                )
            except sass.CompileError as error:
                print(error)

core/apps.py

from django.apps import AppConfig
from core.sass import compiler


class CoreConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'core'

    def ready(self):
        compiler()

更多信息请参考djboilerplate,这是一个样板项目,我在其中添加了sass功能。


0

您是否首先安装了 Sass,Ruby 应用程序?

$ apt-get install ruby-sass

如果做得正确,你会知道的;在命令行上输入sass,会有一些时髦的事情发生。

接下来,我克隆了django-sass(来自另一个答案):

git clone git@bitbucket.org:synic/django-sass.git

然后导航到puled文件夹并安装它。
$ python setup.py install

最初安装崩溃了:

IOError: [Errno 2] No such file or directory: 'CHANGES.rst'

于是我很快创建了这个文件:

 touch CHANGES.rst

然后再次运行安装命令。

没有问题。


0

django-sass-processor是一个很棒的包,能够让你轻松地将SASS/SCSS与Django集成。

下面是一个关于如何设置SASS/SCSS with Django的教程。

我已经使用过这个包几次了,感觉非常不错。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接