真的很感謝@Simeon Visser的回答,並且有一些非常有用的信息,但它並不完全是我所期待的。所以,我一打聽,從書籤交易已經sinister_user_name感謝這一點,而且我認爲他可以幫助別人:
靜態文件在最近的版本改變了公平一點,所以老的博客可能會有點亂。
我給它一個鏡頭:
在你的模板,您可以使用static_url
標籤和Django會在你的路徑填寫。
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
它通過查看您的設置文件來填充靜態url。 STATIC_URL
默認爲/static/
我覺得在設置?如果靜態文件最終出現在公司Web服務器上的一個奇怪的URL中,則可以在設置中進行更改,並且它將反映在所有模板中。所以它們是否絕對無關緊要。
當您開始部署時,您將在設置中填寫STATIC_ROOT
,這只是您設置Web服務器以查找靜態文件的路徑。然後,如果您運行manage.py collectstatic
,它會將它們複製到該目錄。這是我認爲的STATIC_ROOT
的唯一功能。
我將模板目錄與我的靜態目錄分開,主要是因爲您希望您的web服務器僅用於提供靜態文件,而模板則由python進行處理。因此,靜態文件幾乎不是應用程序的一部分,只要Web服務器查看它們即可。我將模板和靜態文件保存在基本目錄中的單獨路徑中,主要是因爲它們都不是Python源文件。
所以,我的項目結構是這樣的:
manage.py
website/settings.py
app/models.py
app/views.py
templates/base.html
static/js/jquery.js
static/css/bootstrap.css
的問題相對路徑是,他們都需要,如果你的URL方案的變化而變化。
可選:我在這個博客中發現,這有助於不把絕對文件系統路徑放入settings.py,如果你在多臺機器上工作,比如工作和家庭,那麼這個路徑很好:( 由於1.4的佈局略有不同這在我的設置上:
import os
import django
import manage
DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__))
SITE_ROOT = os.path.dirname(os.path.realpath(manage.__file__))
,而不是他們有什麼建議(設置的位置在1.4或1.3移動),所以SITE_ROOT
被搞砸了,我認爲可能的工作 在進一步的下跌。我使用這個設置:
# Additional locations of static files
STATICFILES_DIRS = (
os.path.join(SITE_ROOT, 'static'),
)
這將告訴開發服務器在哪裏可以找到靜態文件。您可以對模板執行相同的操作,也可以使用完整的文件路徑。
非常感謝您的例子對於所有的信息來說,我認爲這是正確的,因爲你對保持代碼模塊化以及解釋部署過程做了一些很好的說明。不幸的是,我是一個傻瓜,還沒有能夠找出如何讓自己的實踐項目正確設置,但我決定在這裏打開一個新的,更具體的問題:http://stackoverflow.com/questions/ 11033571/using-static-files-with-the-django-virtual-server – Holly
這對於工頭命令如何工作?我得到的一切工作正常,直到我開始嘗試使用工頭 - 並且它不會在本地加載任何靜態資產......但在部署時工作得很好......來自Simeon的這個答案是我見過的最清晰的解釋處理靜態文件的過程 - 但我希望在使用工頭和活動實例時更清晰一些......現在我的管理員在工頭上查看時沒有css ......任何想法? – tbarbe