2013-12-15 21 views
0

在我的本地PC上,我可以執行「python manage.py runserver」,並且網站完美運行,CSS和全部。我只是將網站部署到公共服務器上,而大多數情況下,CSS(和圖像)不會加載到模板中。CSS未加載到Django模板中。在本地運行時工作

我發現了一些類似問題的其他問題,但我的代碼似乎沒有遭受任何相同的問題。

在Django項目設置中,正在使用相同的python函數來允許應用程序查看模板和靜態CSS /圖像文件。模板正在被視圖找到並加載而沒有問題。

無論從settings.py:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates/css').replace('\\','/'), 
    os.path.join(os.path.dirname(__file__), 'content').replace('\\','/'), 
) 

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'), 
) 

在base.html文件文件,該文件的模板,所有其他擴展:

<head> 
    {% load staticfiles %} 
    <link rel="stylesheet" type="text/css" href="{% static "style.css" %}" media="screen"> 
</head> 

目錄結構:

|project_root/ 
|--manage.py 
|--project/ 
| |--settings.py 
| |--__init__.py 
| |--content/ 
| | |--header.jpg 
| |--templates/ 
| | |--base.html 
| | |--css/ 
| | | |--style.css 

我當CSS沒有加載時,首先想到的是Django找不到style.css文件,但由於我使用的是相同的「os.path.di rname(文件)「技術與模板一樣,我不確定是這種情況。

這裏有什麼問題?

編輯:

我忘了提及的是,PC和服務器都在運行的Python 2.7.5和1.5.5的Django。

+0

您是如何部署項目的?對於靜態文件,你是否遵循[官方howto](https://docs.djangoproject.com/en/1.6/howto/static-files/deployment/)? – sk1p

+0

閱讀此:http://www.hasnath.net/blog/serving-static-files-css-js-images-in-django-the-best-way經過這麼多挖掘,我想出了這一點。 – sha256

+0

你使用什麼服務器? – yuvi

回答

1

你從來沒有在您的文章中提到,所以我猜測:

你絕然./manage.py collectstatic

collectstatic找到的所有靜態文件(CSS,圖片,JS),並把它們放在一個目錄(選擇此django設置目錄STATIC_ROOT)然後你將你的網絡服務器指向該目錄

+0

正確。我還需要將我的STATIC_URL調整爲Dreamhost自動提供的公共文件夾。 – ASwitchTooFar

1

你應該使用你的服務器部署靜態文件而不是django。

official documentation提到使用collectstatic但除非你的靜態文件搞砸了,它通常不是必需的。你只需要有一個包含所有靜態文件的目錄。然後你只需將它與服務器推到django將要查找的同一個地方。

假設你是STATIC_URL是'/static/',所以你需要添加一個別名,它將'/static/'映射到靜態目錄。例如,使用Apache,您應該將此行添加到您的http.conf中:

Alias /static/ /path/to/mysite.com/static/ 

就是這樣!這個東西也適用於媒體文件,並且刪除django爲開發服務器(these kinds of urls)完成的任何靜態文件服務是明智的。最後,check out the documentation有關其他類型部署的更多信息