環境
白話我們可以使用template 設定我們的網頁,同時,乙個完美的網頁需要css,js,image 等靜態檔案的支援。
django中配置方式貌似有不少總,因為很多相關的部落格寫的方式並不一致,當然這可能是django 的版本不同導致的。
當我們在乙個專案下建立乙個app後,我們就需要為該app下建立乙個static 資料夾來存放相關靜態www.cppcns.com資源。
但建立了多個app後,就需要在多個app下建立static。
這樣引入了乙個問題,因為,我們的可能用了同乙個js檔案。分別存放顯然是浪費載入時間。
於是在實際部署的時候,我們會將不同app下的static 檔案放到乙個「合適」的地方。提高資源載入速度,同時也方便管理。
好了,大概就是這個思路,我們下面介紹如何配置
配置step one
--app
--migrations
--static
--css
--js
--image
--templates
--__init__.py
...檔案結構如上所示,注意,我這裡只展示了某app下的結構,而不是整個專案結構,可能你的沒有templates這個資料夾,這不要緊,這個是我建立的。
我們最好在static下分類好不同資料夾 css , js,image.(這是推薦的做法)
多個app時,我們就在不同的app 下建立static。(後面我們在講更合理的方法,這裡需要這樣做為了你理清步驟)
step two
在settings.py中的static_url = '/static/'後面新增
static_root = os.path.join(base_d 'static')
這個static_root 就是我們最終部署時候需要使用的,解決資源分散的問題。
base_dir 這個變數在settings.py的開始部分被定義,就是專案根目錄的目錄名。
os.path.join 方法,在專案根目錄下新建乙個static資料夾。
我看到很多部落格這裡配置的很多,很亂,讓人摸不著頭腦。
這個地方完全可以這樣配置,載入我們的靜態資源。(信我,我可是被很多不負責任的部落格坑慘了)
step three
建立資料夾完,配置檔案這兩步都完成後,我們需要的就是把他放到網頁中顯示。
在app下新建乙個templates,如果有就不用建立
--app
--migrations
--static
--templates
--appname
--index.html
--__init__.py
...大家注意,我並沒有直接在templates下直接建立index.html ,而是建立了乙個」appname」(就根據你的app來命名這樣不會衝突)。並在appname 下建立的index.html。
因為django去找template的時候是吧app下的templates ,存為乙個list。如果我們多個app,就可能導致,想訪問app2的index,結果卻返回了app1的index.html。
index.html 內容
#這個地方引入static這個檔案
程式設計客棧t;
title
#表示路徑
這裡的#號注釋是方便大家理解,並不是html支援的格式,貼上的時候需要去掉
並在image資料夾下加入一張名為logo.png的,因為可以直觀的判讀我們的設定是否生效。
python manage.py runserver 0.0.0.0:9000
訪問你的9000埠,檢視時候生效。注意我們到這裡還未配置nginx.
如果正確,說明路徑沒問題。
step four
python manage.py collectstatic
該命令收集專案下的靜態檔案,統一儲存到 static_root 就是我們第二步,剛剛配置的。
--project
--project
--static
--app1
--app2
--manage.py
...step five
nginxfchoubgk 中配置
location ^~ /static/
這個地方 注意配置到static的上級就可以了。
我之前配置成了root /home/project/static 就會一直提示404
在部署的時候,django也建議將settings.py中的debug=true 改為debug=false。以保證安全性。
重新啟動nginx ,看看是否成功了呢?
如果成功了,程式設計客棧可以將app下的static刪掉再試試,理論上也是可以成功的,因為此時我們已經將專案所有的靜態檔案全都集中到了根目錄下的static中。
總結配置靜態檔案還是要先了解他是如何生效的,one by one,搞清邏輯。
那樣在配置才不會混亂,否則不同的教程只會讓人抓狂。
Django靜態檔案配置
最近用django開發專案,發現django的靜態檔案 js,css和img等 配置比較麻煩,開發環境和生產環境的配置還不一樣,這裡記錄一下,作為備忘。我當前使用的版本是django v1.4.3。吐槽 django的版本不相容是個大問題,網上搜尋相關問題時,解決方案到是一大推,但是均沒有標註版本,...
Django 靜態檔案配置
django 在自身的開發伺服器上有著自身的淺藍色排版。部署到apache伺服器上會呈現一種無排版狀態。原因是 static 靜態檔案沒有配置。1.在設定檔案 settings.py 裡,新增 static url static static root os.path.join base dir,s...
Django靜態檔案配置
本文目的 最近用django開發專案,發現django的靜態檔案 js,css和img等 配置比較麻煩,開發環境和生產環境的配置還不一樣,這裡記錄一下,作為備忘。我當前使用的版本是django v1.4.3。吐槽 django的版本不相容是個大問題,網上搜尋相關問題時,解決方案到是一大推,但是均沒有...