欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年05月20日 08:40:45   作者:katios  
我們可以使用Template 設(shè)置我們的網(wǎng)頁(yè),同時(shí),一個(gè)完美的網(wǎng)頁(yè)需要css,js,image 等靜態(tài)文件的支持,這篇文章主要介紹了django中靜態(tài)文件配置static的方法,感興趣的小伙伴們可以參考一下

環(huán)境

  1. centos7
  2. django 1.11
  3. nginx

白話

我們可以使用Template 設(shè)置我們的網(wǎng)頁(yè),同時(shí),一個(gè)完美的網(wǎng)頁(yè)需要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 文件夾來(lái)存放相關(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)頁(yè)中顯示。

在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來(lái)命名這樣不會(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" %}" alt="My image"/> #{% static "image/logo.png" %}表示路徑

</body>
</html>

這里的#號(hào)注釋是方便大家理解,并不是html支持的格式,粘貼的時(shí)候需要去掉

并在image文件夾下加入一張名為logo.png的圖片,因?yàn)閳D片可以直觀的判讀我們的設(shè)置是否生效。

python manage.py runserver 0.0.0.0:9000

訪問你的9000端口,查看時(shí)候生效。注意我們到這里還未配置nginx.

如果正確,說明路徑?jīng)]問題。

step four

python manage.py collectstatic

該命令收集項(xiàng)目下的靜態(tài)文件,統(tǒng)一保存到 STATIC_ROOT 就是我們第二步,剛剛配置的。

--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)博客的話,靜下心來(lái)閱讀官方文檔。你可以做到的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • pandas factorize實(shí)現(xiàn)將字符串特征轉(zhuǎn)化為數(shù)字特征

    pandas factorize實(shí)現(xiàn)將字符串特征轉(zhuǎn)化為數(shù)字特征

    今天小編就為大家分享一篇pandas factorize實(shí)現(xiàn)將字符串特征轉(zhuǎn)化為數(shù)字特征,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-12-12
  • 通過python爬蟲mechanize庫(kù)爬取本機(jī)ip地址的方法

    通過python爬蟲mechanize庫(kù)爬取本機(jī)ip地址的方法

    python中的mechanize算是一個(gè)比較古老的庫(kù)了,在python2的時(shí)代中,使用的多一些,在python3以后就很少使用了,現(xiàn)在已經(jīng)是2202年了,可能很多人都沒聽說過mechanize,這不要緊,我們先來(lái)簡(jiǎn)單的講解一下,如何使用mechanize,感興趣的朋友一起看看吧
    2022-08-08
  • python實(shí)現(xiàn)兩個(gè)dict合并與計(jì)算操作示例

    python實(shí)現(xiàn)兩個(gè)dict合并與計(jì)算操作示例

    這篇文章主要介紹了python實(shí)現(xiàn)兩個(gè)dict合并與計(jì)算操作,結(jié)合具體實(shí)例形式分析了Python使用collections.Counter進(jìn)行字典dict合并與遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • pandas重置索引標(biāo)簽的實(shí)現(xiàn)示例

    pandas重置索引標(biāo)簽的實(shí)現(xiàn)示例

    在使用Pandas進(jìn)行數(shù)據(jù)處理時(shí),有時(shí)候我們可能會(huì)需要對(duì)數(shù)據(jù)進(jìn)行重置索引的操作,本文主要介紹了pandas重置索引標(biāo)簽的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Django ORM外鍵查詢與反向查詢技巧

    Django ORM外鍵查詢與反向查詢技巧

    Django 的 ORM(對(duì)象關(guān)系映射)是其最強(qiáng)大的功能之一,它使得數(shù)據(jù)庫(kù)操作變得直觀和簡(jiǎn)潔,在復(fù)雜的數(shù)據(jù)庫(kù)結(jié)構(gòu)中,外鍵(Foreign Key)的使用及其對(duì)應(yīng)的反向查詢是 Django 開發(fā)中不可或缺的部分,本文將詳細(xì)介紹如何在 Django 中利用外鍵進(jìn)行數(shù)據(jù)查詢以及執(zhí)行反向查詢
    2023-11-11
  • 詳解Python為什么不用設(shè)計(jì)模式

    詳解Python為什么不用設(shè)計(jì)模式

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著為什么Python不用設(shè)計(jì)模式展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python學(xué)習(xí)筆記之自定義函數(shù)用法詳解

    Python學(xué)習(xí)筆記之自定義函數(shù)用法詳解

    這篇文章主要介紹了Python學(xué)習(xí)筆記之自定義函數(shù)用法,結(jié)合實(shí)例形式詳細(xì)分析了自定義函數(shù)的功能、定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • python如何使用contextvars模塊源碼分析

    python如何使用contextvars模塊源碼分析

    這篇文章主要介紹了python如何使用contextvars模塊源碼分析,contextvars是Python3.7后的官方庫(kù),功能就是可以為多線程以及asyncio生態(tài)添加上下文功能,即使程序在多個(gè)協(xié)程并發(fā)運(yùn)行的情況下,也能調(diào)用到程序的上下文變量,?從而使我們的邏輯解耦
    2022-06-06
  • Python實(shí)現(xiàn)模塊熱加載的示例代碼

    Python實(shí)現(xiàn)模塊熱加載的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)模塊熱加載的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2023-12-12
  • Python實(shí)現(xiàn)給PDF添加水印的方法

    Python實(shí)現(xiàn)給PDF添加水印的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)給PDF添加水印的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論