我正在尝试使用 Django 1.6.3 上的django pipeline编译SASS并压缩CSS文件,但在访问我的网站后出现以下错误:
ValueError:找不到< pipeline.storage.PipelineCachedStorage对象位于0x0585DF50>的文件'css / test2.css'。
我按照readthedocs.org上的指南配置了管道:我已将管道添加到INSTALLED_APPS
,然后我定义了STATIC_URL
和STATIC_ROOT
:
STATIC_URL = '/test/forum/skins/default/media/'
STATIC_ROOT = '/test/forum/skins/default/media/'
文件夹树:
我将SASSCompiler
添加到PIPELINE_COMPILERS
,然后我添加了要压缩的文件的路径:
# pipeline settings
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_COMPILERS = (
'pipeline.compilers.sass.SASSCompiler',
)
PIPELINE_CSS = {
'main': {
'source_filenames': (
'css/test.scss',
),
'output_filename': 'css/test2.css',
},
}
最后我将css链接到我的XHTML索引:
{% load compressed %}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
{% compressed_css 'main' %}
</head>
我不明白我做错了什么。 谢谢你的帮助!
当我运行collectstatic
时,这将复制django中的文件而不是我的项目
F:\DEV\DJANGO\apps\test>python manage.py collectstatic
You have requested to collect static files at the destination
location as specified in your settings:
F:\test\forum\skins\default\media
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
Copying 'F:\DEV\DJANGO\apps\django\django\contrib\admin\static\admin\css\base.
css'
Copying 'F:\DEV\DJANGO\apps\django\django\contrib\admin\static\admin\css\chang
elists.css'
Copying 'F:\DEV\DJANGO\apps\django\django\contrib\admin\static\admin\css\dashb
oard.css'
Copying 'F:\DEV\DJANGO\apps\django\django\contrib\admin\static\admin\css\forms
.css'
Copying 'F:\DEV\DJANGO\apps\django\django\contrib\admin\static\admin\css\ie.cs
s'
[etc .... ]
但路径F:\test\forum\skins\default\media
错误,我的项目位于
在F:\DEV\DJANGO\apps\test\forum\skins\default\media
。
然后我试图找到静态文件:
F:\DEV\DJANGO\apps\test> python manage.py findstatic css/main.css
No matching file found for 'css/main.css'.
但文件存在。
答案 0 :(得分:6)
在Django的settings.py
中,STATIC_ROOT
变量告诉Django在哪里移动静态文件,而STATIC_URL
是用户将看到的URL路径以及从哪里可以看到访问浏览器中的文件。请参阅有关静态文件的Django文档:
https://docs.djangoproject.com/en/dev/ref/settings/#static-files
例如,我们假设您在settings.py文件中包含以下内容:
STATIC_ROOT = "/var/www/example.com/static/"
STATIC_URL = "/static/"
现在,让我们在/home/fuiba/git/your-django-project/
内的同一台计算机上进行软件开发。在你的Django项目中,你有一个名为static的子目录,在该目录中你有一个名为custom.css
的文件。该文件的完整路径是:
`/home/fuiba/git/your-django-project/static/custom.css`
现在,在运行python manage.py collectstatic
后,您的样式表将移至STATIC_ROOT
目录。现在启动Web服务器,您可以通过项目STATIC_URL
访问静态文件。因此,我们假设您在端口8000上的localhost上运行Web服务器,您可以从以下位置的浏览器访问样式表:
http://localhost:8000/static/custom.css
好的,这是它如何运作的基础。在您的情况下,您似乎是在Windows下开发,所以有一些注意事项。首先,不要在路径中使用反斜杠(&#39; \&#39;),只使用正斜杠。但是,您仍然必须指定驱动器号和冒号。因此,让我们将您的STATIC_ROOT
设置为:
STATIC_ROOT = "F:/DEV/DJANGO/apps/test-static-root/"
我选择这个以便您不会污染您的测试项目目录,并且应该在上面的位置创建一个兄弟目录,其中包含您的静态文件。
让我知道你是如何相处的,我会尝试提供更多细节。
祝你好运!