2013-08-02 33 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