環(huán)境
白話
我們可以使用Template 設(shè)置我們的網(wǎng)頁,同時(shí),一個(gè)完美的網(wǎng)頁需要css,js,image 等靜態(tài)文件的支持。
django中配置方式貌似有不少總,因?yàn)楹芏嘞嚓P(guān)的博客寫的方式并不一致,當(dāng)然這可能是django 的版本不同導(dǎo)致的。
當(dāng)我們?cè)谝粋€(gè)項(xiàng)目下創(chuàng)建一個(gè)app后,我們就需要為該app下創(chuàng)建一個(gè)static 文件夾來存放相關(guān)靜態(tài)資源。
但創(chuàng)建了多個(gè)app后,就需要在多個(gè)app下創(chuàng)建static。
這樣引入了一個(gè)問題,因?yàn)椋覀兊目赡苡昧送粋€(gè)js文件。分別存放顯然是浪費(fèi)加載時(shí)間。
于是在實(shí)際部署的時(shí)候,我們會(huì)將不同app下的static 文件放到一個(gè)“合適”的地方。提高資源加載速度,同時(shí)也方便管理。
好了,大概就是這個(gè)思路,我們下面介紹如何配置
配置
step one
--app --migrations --static --css --js --image --templates --__init__.py ...
文件結(jié)構(gòu)如上所示,注意,我這里只展示了某app下的結(jié)構(gòu),而不是整個(gè)項(xiàng)目結(jié)構(gòu),可能你的沒有templates這個(gè)文件夾,這不要緊,這個(gè)是我創(chuàng)建的。
我們最好在static下分類好不同文件夾 css , js,image.(這是推薦的做法)
多個(gè)app時(shí),我們就在不同的app 下創(chuàng)建static。(后面我們?cè)谥v更合理的方法,這里需要這樣做為了你理清步驟)
step two
在settings.py中的STATIC_URL = '/static/'后面添加
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
這個(gè)STATIC_ROOT 就是我們最終部署時(shí)候需要使用的,解決資源分散的問題。
BASE_DIR 這個(gè)變量在settings.py的開始部分被定義,就是項(xiàng)目根目錄的目錄名。
os.path.join 方法,在項(xiàng)目根目錄下新建一個(gè)static文件夾。
我看到很多博客這里配置的很多,很亂,讓人摸不著頭腦。
這個(gè)地方完全可以這樣配置,加載我們的靜態(tài)資源。(信我,我可是被很多不負(fù)責(zé)任的博客坑慘了)
step three
創(chuàng)建文件夾完,配置文件這兩步都完成后,我們需要的就是把他放到網(wǎng)頁中顯示。
在app下新建一個(gè)templates,如果有就不用創(chuàng)建
--app --migrations --static --templates --appname --index.html --__init__.py ...
大家注意,我并沒有直接在templates下直接創(chuàng)建index.html ,而是創(chuàng)建了一個(gè)”appname”(就根據(jù)你的app來命名這樣不會(huì)沖突)。并在appname 下創(chuàng)建的index.html。
因?yàn)閐jango去找template的時(shí)候是吧app下的templates ,存為一個(gè)list。如果我們多個(gè)app,就可能導(dǎo)致,想訪問app2的index,結(jié)果卻返回了app1的index.html。
index.html 內(nèi)容
{% load static %} #這個(gè)地方引入static這個(gè)文件<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><img src="{% static "image/logo.png" %}" style="margin: 0px; padding: 0px; outline: none; line-height: 25.2px; font-size: 14px; width: 660px; overflow: hidden; clear: both; font-family: tahoma, arial, "Microsoft YaHei";"> --project --project --static --app1 --app2 --manage.py ...
step five
nginx 中配置
location ^~ /static/ { root /home/project/; }這個(gè)地方 注意配置到static的上級(jí)就可以了。
我之前配置成了root /home/project/static 就會(huì)一直提示404
在部署的時(shí)候,django也建議將settings.py中的debug=True 改為debug=False。以保證安全性。
重新啟動(dòng)nginx ,看看是否成功了呢?
如果成功了,可以將app下的static刪掉再試試,理論上也是可以成功的,因?yàn)榇藭r(shí)我們已經(jīng)將項(xiàng)目所有的靜態(tài)文件全都集中到了根目錄下的static中。
總結(jié)
配置靜態(tài)文件還是要先了解他是如何生效的,one by one,搞清邏輯。
那樣在配置才不會(huì)混亂,否則不同的教程只會(huì)讓人抓狂。
如果找不到相關(guān)博客的話,靜下心來閱讀官方文檔。你可以做到的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選