国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

django靜態(tài)文件配置和使用

這篇具有很好參考價(jià)值的文章主要介紹了django靜態(tài)文件配置和使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、首先需要了解的知識(shí)點(diǎn)是:

1、出于對(duì)效率和安全的考慮,django管理靜態(tài)文件的功能僅限于在開(kāi)發(fā)階段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.contrib.staticfiles(django工程創(chuàng)建后默認(rèn)已經(jīng)安裝),網(wǎng)站正式部署上線后,靜態(tài)文件是由Nginx等服務(wù)器管理。

二、接下來(lái)看下如何配置和引入靜態(tài)文件

先把工程的目錄結(jié)構(gòu)展示出來(lái),方便后文敘述

django靜態(tài)文件配置和使用

相關(guān)配置:

1、首先確保在配置文件的INSTALLED_APPS中加入了 django.contrib.staticfiles(默認(rèn)已加入)

2、在配置文件中配置STATIC_URL,如:

STATIC_URL="/st/"  # STATIC_URL的作用是用于拼接靜態(tài)文件的存儲(chǔ)路徑。

3、在配置文件中配置STATICFILES_DIRS為靜態(tài)靜態(tài)文件的存儲(chǔ)路徑,比如:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")  # 即靜態(tài)文件存放在 BASE_DIR/static 下(和manage.py同級(jí)目錄下),注意BASE_DIR指django工程的絕對(duì)路徑
]

配置完成之后就可以在模板中導(dǎo)入靜態(tài)文件了

引入靜態(tài)文件:

1、在模板文件中導(dǎo)入static模板標(biāo)簽,即在模板文件的開(kāi)頭處寫(xiě)上:{% load static %}

django靜態(tài)文件配置和使用

說(shuō)明:static模板標(biāo)簽(即{% static "url" %}標(biāo)簽)并不是django內(nèi)置的模板標(biāo)簽,而是屬于自定義模板標(biāo)簽,所以我們不能直接使用,需要先導(dǎo)入該模板標(biāo)簽才行。

那么這個(gè)標(biāo)簽在哪里定義的呢?如果是pycharm,直接在{% load static %}中,把光標(biāo)放在static上,按ctr+b定位到定義處,如下圖:

django靜態(tài)文件配置和使用

根據(jù)注釋,我們可以看出這個(gè)模板標(biāo)簽的作用就是傳遞一個(gè)靜態(tài)文件的相對(duì)路徑(即形參path),返回該靜態(tài)文件的絕對(duì)路徑。

2、使用{% static "url.."%}標(biāo)簽引入靜態(tài)文件

第1步中我們已經(jīng)導(dǎo)入了static模板標(biāo)簽,也了解了它的作用,下面就可以使用它引入靜態(tài)文件了。先給個(gè)例子,方便解釋,比如我們需要在模板中引入/static/css/下的bootstrap.css,那么就應(yīng)該這么寫(xiě):

<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">

至于為什么路徑中的/static/沒(méi)寫(xiě)在static標(biāo)簽處,我們等下再解釋。

結(jié)合static函數(shù)的源碼(即static標(biāo)簽定義),上面link標(biāo)簽中的static模板標(biāo)簽的含義就是,把bootstrap.css的相對(duì)路徑'css/bootstrap.css'傳給了static函數(shù)的path形參,所以它應(yīng)該給我們返回一個(gè)該靜態(tài)文件的絕對(duì)路徑。由于我們?cè)谏衔呐渲弥信渲昧薙TATIC_URL="/st/",所以在瀏覽器端,查看該模板對(duì)應(yīng)的HTML源碼,可以發(fā)現(xiàn)django把上面這個(gè)標(biāo)簽渲染出來(lái)的結(jié)果是:

<link rel="stylesheet" href="/st/css/bootstrap.css">

?"/st/css/bootstrap.css"就是static標(biāo)簽返回的絕對(duì)路徑,那么為什么前面多個(gè)/st/?這是我們留下的第二個(gè)疑問(wèn),往后讀就能找到答案。

現(xiàn)在解釋上面留下的第一個(gè)疑問(wèn),為什么路徑中的/static/沒(méi)寫(xiě)在static標(biāo)簽處?這個(gè)又涉及到一個(gè)配置:

django靜態(tài)文件配置和使用

關(guān)于這個(gè)配置,不做深入探討,我們只需要簡(jiǎn)單了解他的作用即可,具體信息考參考官網(wǎng)(https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-STATICFILES_FINDERS)

官網(wǎng)給出的說(shuō)明就是,django在查找靜態(tài)文件的時(shí)候,首先會(huì)在STATICFILES_DIRS指定的路徑中尋找,找不到就會(huì)在各個(gè)app下的static文件夾下面找,由于我們?cè)谂渲梦募幸呀?jīng)指定了static文件夾,也就是說(shuō)已經(jīng)告訴了django,首先去static文件夾中找指定的靜態(tài)文件,所以上面的static標(biāo)簽就會(huì)自動(dòng)去static文件夾中去找css下的bootstrap.css這個(gè)靜態(tài)文件,所以就沒(méi)必要再把/static/寫(xiě)上了,否則就成了告訴django去static文件夾下的static/css/找bootstrap.css,這樣就會(huì)找不到了。

至此,我們已經(jīng)知道了如何引入static標(biāo)簽,以及使用static標(biāo)簽引入靜態(tài)文件,順帶也把STATICFILES_DIRS配置的作用說(shuō)明了,還有一個(gè)模糊的地方就是STATIC_URL配置是個(gè)什么鬼,為什么django會(huì)把上面static標(biāo)簽返回的絕對(duì)路徑前面加一個(gè)/st/?

要說(shuō)明STATIC_URL的作用,首先要捋一捋django處理http請(qǐng)求的過(guò)程:瀏覽器發(fā)送一個(gè)http請(qǐng)求,django的url解析器解析url,然后匹配到相應(yīng)的視圖函數(shù)處理請(qǐng)求。再看django最終把我們上面的標(biāo)簽渲染成如下:

<link rel="stylesheet" href="/st/css/bootstrap.css">

那么瀏覽器去請(qǐng)求這個(gè)靜態(tài)文件的時(shí)候,其完整請(qǐng)求路徑應(yīng)該是http://localhost:8000/st/css/bootstrap.css,django是如何解析這個(gè)請(qǐng)求路徑,然后找到相應(yīng)的靜態(tài)文件并返回的呢?

回憶一下我們開(kāi)頭講的,要在django中管理靜態(tài)文件,需要安裝django.contrib.staticfiles這個(gè)APP,所以猜測(cè),django處理這個(gè)請(qǐng)求都是在這個(gè)APP中完成的,進(jìn)入到這個(gè)APP

django靜態(tài)文件配置和使用

發(fā)現(xiàn)這個(gè)APP結(jié)構(gòu)和我們自定義的APP差不多,猜測(cè)django處理上述靜態(tài)文件路徑(解析路徑,路由到視圖函數(shù)處理請(qǐng)求等)就是在urls.py中完成的,點(diǎn)開(kāi):

django靜態(tài)文件配置和使用

看到上圖中的urlpatterns = [],是不是熟悉的感覺(jué)?

在點(diǎn)開(kāi)截圖中橢圓形框出的static函數(shù),看干了什么

django靜態(tài)文件配置和使用

看到re_path()是不是更熟悉的感覺(jué)?其實(shí)這個(gè)APP解析url和路由到指定視圖函數(shù)跟我們自定義的APP邏輯是一樣的。

很簡(jiǎn)單,就是把url中的前綴/st/提取出來(lái),作為正則表達(dá)式的匹配字符串,也就是說(shuō),瀏覽器發(fā)出的http:8000/st/css/bootstrap.css的請(qǐng)求,由于該地址前綴是/st/,所以會(huì)被這個(gè)規(guī)則匹配到,從而路由到相應(yīng)的視圖函數(shù)進(jìn)一步處理。

這樣,我們就明白了STATIC_URL配置項(xiàng)的作用了,就是使用{% static "url.." %}時(shí),把STATIC_URL配置的字符串拼接到靜態(tài)文件的路徑上作為其前綴,以便于在django.contrib.staticfiles這個(gè)APP解析出靜態(tài)文件的真正路徑,然后帶著這個(gè)真正路徑去STATICFILES_DIRS配置的路徑下找,找不到就去每個(gè)APP下的static文件夾中找。

所以說(shuō),STATIC_URL配置的字符串只是個(gè)符號(hào),你想寫(xiě)啥都行(當(dāng)然要守規(guī)矩)。

另外的注意事項(xiàng):

在我們配置的{% static 'css/bootstrap.css' %},中,如果寫(xiě)成{% static '/css/bootstrap.css' %}也就是css前面有個(gè)"/",那么django就會(huì)認(rèn)為這是一個(gè)絕對(duì)路徑,而不會(huì)把STATIC_URL配置項(xiàng)加到css前面,官網(wǎng):https://docs.djangoproject.com/en/2.2/topics/forms/media/#form-asset-paths 中的Paths in asset definitions條目

?還有STATIC_ROOT配置,參見(jiàn):https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-STATICFILES_STORAGE文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-434302.html

到了這里,關(guān)于django靜態(tài)文件配置和使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用gunicorn部署django項(xiàng)目時(shí),發(fā)現(xiàn)靜態(tài)文件加載失敗問(wèn)題,及部署

    from ? django.contrib.staticfiles.urls? import ? staticfiles_urlpatterns ? ? urlpatterns? = ? [ ?? url( \\\'^admin/\\\' ,?admin.site.urls), ] urlpatterns? + = ? staticfiles_urlpatterns() # 修改settings.py文件的:INSTALLED_APPS INSTALLED_APPS = [ ... \\\'gunicorn\\\', # 把gunicorn添加到apps中 ] 配置腳本文件啟動(dòng)django項(xiàng)目: # gunicorn_con

    2024年02月09日
    瀏覽(27)
  • 關(guān)于設(shè)置靜態(tài)IPV4靜態(tài)地址后ipconfig/all發(fā)現(xiàn)IPV4首先是169開(kāi)頭的IP

    關(guān)于設(shè)置靜態(tài)IPV4靜態(tài)地址后ipconfig/all發(fā)現(xiàn)IPV4首先是169開(kāi)頭的IP

    ?解決辦法一: 出現(xiàn)這種情況一般是IP地址沖突,換一個(gè)IP地址。 解決辦法二: 1、windows+R 輸入cmd進(jìn)入命令行。 2、輸入? netsh winsock reset 后回車(chē) , 稍后,會(huì)有成功的提示:成功地重置Winsock目錄→重啟計(jì)算機(jī)完成重置。 3、之后輸入 netshintIPreset.log (按回車(chē)鍵執(zhí)行命令) 4、之

    2024年04月25日
    瀏覽(17)
  • Django靜態(tài)文件&媒體文件&文件上傳

    Django靜態(tài)文件&媒體文件&文件上傳

    創(chuàng)建一個(gè)新項(xiàng)目 Day06DjangoPro01 每一個(gè)應(yīng)用中都可以新建一個(gè)static和templates 如果想要額外再加一些靜態(tài)文件路徑,就再加一個(gè)STATICFILES_DIRS Apptemplatesindex.html 一般用 link rel=\\\"stylesheet\\\" href=\\\"{% static \\\'css/index.css\\\' %}\\\" Appstaticcssindex.css 根路由 Day06DjangoPro01urls.py Appviews.py 在項(xiàng)目根目錄

    2024年02月10日
    瀏覽(235)
  • Django后端開(kāi)發(fā)——靜態(tài)文件

    Django后端開(kāi)發(fā)——靜態(tài)文件

    B站網(wǎng)課:點(diǎn)擊藍(lán)色字體跳轉(zhuǎn) 或者復(fù)制網(wǎng)址在瀏覽器訪問(wèn):https://www.bilibili.com/video/BV1vK4y1o7jH?p=13vd_source=597e21cf34ffcdce468ba00be2177e8a 如:圖片、css、js、音頻、視頻 以下一行代碼是手動(dòng)添加的,指定了一個(gè)目錄——‘static’,將在該目錄下查找靜態(tài)文件 模板中訪問(wèn)靜態(tài)文件 - im

    2024年02月19日
    瀏覽(511)
  • Django 靜態(tài)自定義化配置

    Django 靜態(tài)自定義化配置

    STATIC TEMPLATES 一般 Django 默認(rèn)的 TEMPLATES 配置為: ? ? ? ? 注: BACKEND : 指定模板引擎(一般不需改動(dòng))。 APP_DIRS : 一個(gè)布爾值,指示是否在每個(gè)已安裝的應(yīng)用程序的? templates ?子目錄中查找模板。在這個(gè)例子中,它被設(shè)置為? True ,這意味著 Django 會(huì)在每個(gè)應(yīng)用程序的? templ

    2024年02月07日
    瀏覽(21)
  • Django_靜態(tài)資源配置和ajax(九)

    Django_靜態(tài)資源配置和ajax(九)

    目錄 一、靜態(tài)資源配置 ?二、AJAX ajax作用 使用ajax 1、環(huán)境配置 ?2、創(chuàng)建html模板文件 3、編寫(xiě)視圖函數(shù)并添加路由 4、運(yùn)行django開(kāi)發(fā)服務(wù)器進(jìn)行驗(yàn)證 源碼等資料獲取方法 靜態(tài)資源的相關(guān)配置都在項(xiàng)目目錄下的 settings.py 文件中進(jìn)行配置。配置參數(shù)如下: ?注意:django查找靜態(tài)

    2024年02月15日
    瀏覽(30)
  • 你所不了解的靜態(tài)路由特點(diǎn)及配置分析

    ?許多讀者朋友錯(cuò)誤地認(rèn)為靜態(tài)路由很簡(jiǎn)單,就一個(gè)命令,沒(méi)什么好學(xué)的。其實(shí)這是因?yàn)樗麄兏緵](méi)有深入理解靜態(tài)路由的工作原理,對(duì)于僅有一條靜態(tài)路由配置命令中的各參數(shù)和選項(xiàng)的含義和使用方法也是一知半解,結(jié)果造成的是遇到一些靜態(tài)路由故障時(shí)無(wú)法進(jìn)行分析,而

    2024年02月06日
    瀏覽(24)
  • 標(biāo)題:深入了解靜態(tài)路由和DHCP:網(wǎng)絡(luò)配置的利器 靜態(tài)路由配置和路由器上配置DHCP、虛擬局域網(wǎng)VLAN

    標(biāo)題:深入了解靜態(tài)路由和DHCP:網(wǎng)絡(luò)配置的利器 靜態(tài)路由配置和路由器上配置DHCP、虛擬局域網(wǎng)VLAN

    引言: 靜態(tài)路由和DHCP(動(dòng)態(tài)主機(jī)配置協(xié)議)是網(wǎng)絡(luò)配置中至關(guān)重要的兩項(xiàng)技術(shù)。靜態(tài)路由允許管理員手動(dòng)配置網(wǎng)絡(luò)路由,實(shí)現(xiàn)數(shù)據(jù)包在網(wǎng)絡(luò)中的精確傳輸;而DHCP則可以為網(wǎng)絡(luò)中的設(shè)備自動(dòng)分配IP地址,簡(jiǎn)化設(shè)備接入過(guò)程。本文將深入探討這兩項(xiàng)技術(shù)的工作原理、配置方法以

    2024年02月02日
    瀏覽(26)
  • Django - 頁(yè)面靜態(tài)化基本使用(一)

    Django - 頁(yè)面靜態(tài)化基本使用(一)

    一個(gè)網(wǎng)頁(yè)會(huì)有很多數(shù)據(jù)是不需要經(jīng)常變動(dòng)的,比如說(shuō)首頁(yè),變動(dòng)頻率低而訪問(wèn)量大,我們可以把它靜態(tài)化,這樣就不需要每次有請(qǐng)求都要查詢數(shù)據(jù)庫(kù)再返回,可以減少服務(wù)器壓力 我們可以使用Django的模板渲染功能完成頁(yè)面渲染 所謂頁(yè)面靜態(tài)化, 就是提前渲染出完整的html頁(yè)面

    2024年02月08日
    瀏覽(14)
  • 驚~只需要這樣配置就可以讓小程序使用Prettier格式化,還支持wxml等文件

    驚~只需要這樣配置就可以讓小程序使用Prettier格式化,還支持wxml等文件

    安裝Prettier 首先找到擴(kuò)展商店的入口 入口1:設(shè)置 → 擴(kuò)展設(shè)置 → 編輯器擴(kuò)展 → prettier 入口2:打開(kāi)編輯器面板 → 找到小方塊(擴(kuò)展商店)→ 搜索prettier 配置基礎(chǔ)的規(guī)則 安裝好后,就可以在設(shè)置中找到該插件了,然后進(jìn)行設(shè)置,直接點(diǎn)擊右上角的格式化配置文件 setting.js

    2024年02月09日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包