【问题标题】:Why can't Django see my static files?为什么 Django 看不到我的静态文件?
【发布时间】:2016-08-10 01:17:25
【问题描述】:

我正在尝试在我的 django_cms 站点中实现 sass_processor,但遇到了一个奇怪的错误。

Unable to locate file mysite/static/scss/main.scss while rendering tag 'sass_src' in template /Users/USER/Work/DIR/APP/SITE/mysite/templates/base.html

我已按照最新的 Django CMS 安装说明进行操作,一切都已设置好并正常运行。我试过导入静态 css 文件,效果很好。

例如在我的 base.html 中

<link href="{% static 'myapp/static/css/main.css' %}" rel="stylesheet" type="text/css" />

完美导入

我已确保在我的模板中包含 sass_tags

我已按照此处 github 页面上的说明进行操作: https://github.com/jrief/django-sass-processor

我的sass导入如下:

<link href="{% sass_src 'myapp/static/scss/main.scss' %}" rel="stylesheet" type="text/x-scss" />

我的静态文件结构如下:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
STATIC_ROOT = os.path.join(DATA_DIR, 'static')
SASS_ROOT = os.path.join(BASE_DIR, 'mysite', 'static', 'scss')
SASS_PROCESSOR_ROOT = SASS_ROOT

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'django_libsass.SassCompiler'),
)

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'mysite', 'static'),
)

SASS_PROCESSOR_INCLUDE_DIRS = (
    os.path.join(BASE_DIR, 'mysite', 'static'),
    SASS_ROOT
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'sass_processor.finders.CssFinder',
)

SASS_PROCESSOR_ENABLED = True

我的文件结构如下:

|+env/
`~tate/
  |+media/
  |~mysite/
  | |~static/
  | | |+css/
  | | `~scss/
  | |   `-main.scss
  | |+templates/
  | |-__init__.py
  | |-__init__.pyc
  | |-settings.py
  | |-settings.pyc
  | |-urls.py
  | |-urls.pyc
  | |-wsgi.py
  | `-wsgi.pyc
  |+static/
  |-manage.py*
  `-requirements.txt

我觉得我错过了某种路径配置,但我不确定它可能在哪里,因为我遵循了 Django CMS 教程和 sass_processor 页面上概述的说明。

感谢任何帮助。

【问题讨论】:

  • 您好 Daniel,您的本地机器是否出现此错误?还是在远程服务器上?
  • 最明显的问题,但你确定你提供了正确的路径吗?你能粘贴你的静态文件结构吗?你设置了 SASS_PROCESSOR_ROOT 变量吗?
  • @mateuszb 我已更新,希望对您有所帮助
  • @Paulo 只是我的本地机器。

标签: python django sass django-cms


【解决方案1】:

我遇到了相同的错误消息的类似问题。 Django 找不到我的 scss 文件,但它与我最初认为的 CssFinder 没有任何关系,问题是我没有在我的 HTML 中为 django.contrib.staticfiles.finders.FileSystemFinder 提供有效路径,这是一个试图找到scss文件。

确保为 FileSystemFinder 配置提供有效路径,因为您要引用的路径不匹配:您的错误显示为 mysite/static/scss/main.scss,而您的 HTML 链接显示为 myapp/static/scss/main.scss。我不知道这只是一个错字还是你的错误没有发生在这里。

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您应该将 SASS 导入的类型更改为“text/css”。 text/x-scss 类型被 django-compressor 使用,但不被 django-sass-processor 使用。

    您的新 SASS 导入将变为:

    <link href="{% sass_src 'myapp/static/scss/main.scss' %}" rel="stylesheet" type="text/css" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-22
      • 2016-12-05
      • 2013-05-21
      • 2021-12-31
      • 2021-11-25
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      相关资源
      最近更新 更多