2013-08-02 34 views
2

我并没有从根本上理解manage.py collectstatic的工作方式。我当时的想法是你必须的路径如何收集静态工作?

project/app/static/app/base.css 

和运行collectstatic并它们复制到然后可以通过访问一个/ staticfiles /文件夹{{STATIC_URL}}。我试过这个,它似乎没有找到base.css。

这里是我的变量,以供参考:

basepath = os.path.split(os.path.abspath(__file__))[0]  
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(basepath, 'staticfiles') 
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}base.css" /> 

哪个试图让样式表时,所有这些导致多达404错误:

"GET /base.css HTTP/1.1" 404 2255 
+0

是'/ static/base.css'中的样式表? – dm03514

+0

它似乎是。当我收集静态它告诉我一个文件被复制,但到哪里?以下是我的目录的外观:http://i.imgur.com/6HmlQZO.png – Nanor

回答

2

看来collectstatic是复制过来的罚款。

我想你只需要使用的,而不是试图访问STATIC_URL变量

我不认为STATIC_URL是模板范围内可用的{% static "base.css" %}模板标签。

,你可以访问它做这样的事情

from django.conf import settings 

settings.STATIC_URL 

{% static %}标签可以实现这个要求。似乎django的版本很重要1.5 looks like它使用{% static %}标签,但早期版本看起来像他们支持STATIC_URL当您有RequestContext注册。

+0

工作过。我想我在某处读到,这对于部署到生产中是非常低效的?或者我在想别的什么? – Nanor

+1

@Nanor,你的网络服务器,即。阿帕奇,Nginx的,等应该是服务您的静态内容,而不是Django的,如果使用Apache,你可以使用'Alias'做到这一点 – dm03514

+0

如果从Amazon S3获取文件是与具有Web服务器做呢?我就是这么设定的。 – Nanor