为什么Django看不到我的静态文件?

时间:2016-08-10 01:17:26

标签: python django sass django-cms

我正在尝试在我的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页面上列出的说明。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您应该将SASS导入的类型更改为&#34; text / css &#34;。 &#34; text / x-scss &#34;类型由 django-compressor 使用,但不是由 django-sass-processor 使用。

您的新SASS导入将变为:

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

答案 1 :(得分:0)

我遇到了类似的错误消息。 Django无法找到我的scss文件,但它与CssFinder没有任何关系,正如我最初想的那样,问题是我没有在django.contrib.staticfiles.finders.FileSystemFinder的HTML中提供有效路径,即试图找到scss文件的人。

请确保为FileSystemFinder配置提供有效路径,因为您遇到的路径不匹配:当您的HTML链接显示mysite/static/scss/main.scss时,您的错误显示为myapp/static/scss/main.scss 。我不知道这只是一个错字,或者你的错误不会在这里发生。

我希望这会有所帮助。