国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django中靜態(tài)文件配置static的方法

2020-01-04 15:02:16
字體:
供稿:網(wǎng)友

環(huán)境

  1. centos7
  2. django 1.11
  3. nginx

白話

我們可以使用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)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武宁县| 迁西县| 中卫市| 苏州市| 英山县| 崇信县| 鄯善县| 阿坝| 景洪市| 阿坝县| 湛江市| 镇安县| 大宁县| 桂东县| 宕昌县| 肇东市| 日照市| 南丹县| 剑川县| 盐边县| 于田县| 盈江县| 金堂县| 安阳市| 响水县| 阿合奇县| 古蔺县| 乐亭县| 曲阜市| 新野县| 土默特右旗| 阿坝县| 沿河| 隆化县| 昌邑市| 西峡县| 凤台县| 浙江省| 阳东县| 辽阳市| 屏山县|