解決方法:1、正確配置“settings.py”文件里的“STATIC_URL”和“STATIC_ROOT”;2、執(zhí)行“python manage.py collectstatic”命令;3、重啟gunicorn和nginx即可。
本教程操作環(huán)境:windows7系統(tǒng)、CSS3&&HTML5版、Dell G3電腦。
將Django部署到服務(wù)器之后,每一次在本地端對(duì)網(wǎng)站的修改都需要在服務(wù)端進(jìn)行同步,在寫(xiě)本文之前,我還以為只是把源碼保持同步就可以了,沒(méi)想到卻遇到了今天的問(wèn)題。
修改了main.css文件之后,然后我通過(guò)git對(duì)網(wǎng)站進(jìn)行了同步,代碼已經(jīng)成功同步到了服務(wù)器上。但就是無(wú)法正常顯示,經(jīng)一番查找探究之后,我發(fā)現(xiàn)了修改css等靜態(tài)文件的正確姿勢(shì)…
1.配置文件
首先應(yīng)該改確保你項(xiàng)目下的settings.py文件已經(jīng)正確配置了STATIC_URL和STATIC_ROOT:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR,'static/')
請(qǐng)注意引號(hào)里面的"/",多一個(gè)或者少一個(gè)/",都會(huì)使你的修改無(wú)法生效,我就是因?yàn)檫@里多了一個(gè)"/",翻了車(chē)。那這兩個(gè)參數(shù)具體是什么意思呢?
STATIC_ROOT是一個(gè)絕對(duì)地址,它是在Django部署的時(shí)候才會(huì)用到,它所對(duì)應(yīng)的文件夾是存放被從項(xiàng)目各個(gè)地方收集來(lái)的靜態(tài)文件,因?yàn)橐粋€(gè)Django可能有多個(gè)APP,相應(yīng)的,每個(gè)APP可能都會(huì)有自己的static文件,將各個(gè)APP中的靜態(tài)文件收集到一起是為了nginx統(tǒng)一使用。那這些文件是由誰(shuí)來(lái)收集的呢?這個(gè)問(wèn)題會(huì)在第二步的時(shí)候說(shuō)到。
STATIC_URL的作用就是為了能夠?yàn)g覽器訪問(wèn)到你的靜態(tài)文件,起到了一個(gè)映射的作用。一般默認(rèn)設(shè)置為"/static/"
2.收集文件
本地css文件同步到服務(wù)器之后,只是同步到了對(duì)應(yīng)APP下面的static文件夾里面,但是nginx等調(diào)用的是你設(shè)置的STATIC_ROOT文件夾下的文件,所以代碼同步之后我們要進(jìn)行這個(gè)非常重要的操作:
python manage.py collectstatic
運(yùn)行完這條代碼之后,剛剛修改的main.css文件將會(huì)被收集到網(wǎng)站根目錄下的static文件中,等待nginx的調(diào)用。
3.重啟服務(wù)
前兩步做完之后,你還需要重啟一下gunicorn和nginx,不過(guò)我沒(méi)有重啟也生效了,如果沒(méi)有生效的話建議執(zhí)行此步驟。
# 查看gunicorn進(jìn)程ID pstree -ap | grep gunicorn # 重啟進(jìn)程 kill -HUP ID
推薦學(xué)習(xí):css視頻教程