最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django學(xué)習(xí)之靜態(tài)文件與模板詳解

 更新時(shí)間:2022年02月15日 11:41:28   作者:lishuaigell  
這篇文章主要為大家詳細(xì)介紹了Django靜態(tài)文件與模板,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

我們已經(jīng)配置完Django,今天就來學(xué)學(xué)靜態(tài)文件與模板的放置使用。

模板

在上一章節(jié)中我們的視圖函數(shù)test使用了HttpResponse返回一個(gè)字符串

作為我們第一個(gè)Django程序

但只有這些是遠(yuǎn)遠(yuǎn)不夠的,你說要是別人看自己的網(wǎng)頁就幾行文字在那里,既不美觀也無意義。

存放目錄

我們平時(shí)看到的網(wǎng)頁都是通過HTML向我們呈現(xiàn)的內(nèi)容的,Django也一樣。一個(gè)完整系統(tǒng)必須有著大量網(wǎng)頁用于實(shí)現(xiàn)不同的功能,而那些HTML文件也有一個(gè)專門存放的目錄叫templates模板。這個(gè)目錄一般在APP目錄下創(chuàng)建,每個(gè)APP均可創(chuàng)建一個(gè)templates用來存放HTML文件。當(dāng)我們調(diào)用HTML文件的時(shí)候,系統(tǒng)就會根據(jù)APP的注冊順序在每個(gè)APP下的templates找所需要的HTML文件。

模板調(diào)用

那么現(xiàn)在我們在APP文件下創(chuàng)建一個(gè)templates目錄。

并在該目錄下創(chuàng)建一個(gè)名為demo的HTML文件

 輸入些內(nèi)容后就在能在視圖函數(shù)調(diào)用這個(gè)模板了。

進(jìn)入view.py文件定義一個(gè)函數(shù)以調(diào)用demo.html模板。

from django.shortcuts import render, HttpResponse
 
 
# Create your views here.
 
def test(request):
    return render(request, "demo.html")

注意:函數(shù)一定要加上 request參數(shù),在引用html模板時(shí)使用的render同樣需要加上request參數(shù)。

接下來在url.py文件中,確定好關(guān)系就OK了。(網(wǎng)頁路徑以hd/為例)

點(diǎn)擊運(yùn)行后,輸入網(wǎng)址http://127.0.0.1:8000/hd/進(jìn)入。

就能看到跟上圖類似的運(yùn)行結(jié)果了。

模板語法

Django不是標(biāo)記語言,它能進(jìn)行數(shù)據(jù)處理。渲染網(wǎng)頁前會先執(zhí)行Django語句,然后將得出的符合邏輯的能夠呈現(xiàn)給用戶看的結(jié)果替換掉對應(yīng)位置的Django語句。

數(shù)據(jù)傳遞

在制作網(wǎng)頁時(shí),如果我們不能一下子知道元素的值,比如需要通過數(shù)據(jù)庫才能獲取數(shù)據(jù)操作等,那么我們就要在視圖函數(shù)中將需要的數(shù)據(jù)以字典的形式進(jìn)行傳遞給HTML。值得高興的是,常用的數(shù)據(jù)類型都能傳遞。

傳遞方法:將變量以字典形式通過render函數(shù)進(jìn)行傳遞,在HTML引用時(shí),通過雙花括號+鍵名引用。

現(xiàn)在試試吧!  

在視圖函數(shù)編寫些函數(shù),然后傳遞過去

    s = "這是一個(gè)字符串"
    d = {"這是一個(gè)": "字典"}
 
    return render(request, "demo.html", {"str": s, "dict": d})

 之后在對應(yīng)的HTML頁面引用它

<h3> {{ str }} {{dict}}</h3>

 最后點(diǎn)運(yùn)行。

 

元素引用

Django同樣支持引用字典,列表,元組等數(shù)據(jù)類型里面的值,不一樣的是Django用.取代了[]。

比如想引用字典里面的值需要通過 {{字典名.鍵名}} 來引用值(注意,鍵名無需使用引號。),如果想引用列表則 {{列表名.索引值}} 亦或者 多維列表 {{列表名.索引1.索引2...}} 來引用。

view.py

def test(request):
    d = {"這是一個(gè)": "字典"}
    l1 = [1, 2, 3]
    l2 = [[1, 2], [3, 4]]
    return render(request, "demo.html",
                  {"list1": l1, "dict": d, "list2": l2}
                  )

demo.html

<body>
<h1>快看調(diào)用成功了沒有?</h1>
<h3> {{list1.0}}</h3>
<h3> {{list2.0.1}}</h3>
<!--注意鍵名無需帶引號-->
<h3> {{dict.這是一個(gè)}}</h3>
</body>

 結(jié)果 

 for語句

Django也支持循環(huán)語句,但在使用完循環(huán)后需要加結(jié)束語句。這些命令都在 {% 命令 %}尖括號百分號之間。{與%之間沒有空格

循環(huán)使用字典時(shí), 如果你想獲取鍵(keys),值(values),鍵值對(items)后面都不需要添加括號。

先看字典

    d = {"今天": "天氣", "真不錯(cuò)": "對嗎?"}
    l1 = [1, 2, 3]
    return render(request, "demo.html",
                  {"list1": l1, "dict": d}
                  )
<h1>快看調(diào)用成功了沒有?</h1>
<!--無需帶括號-->
{% for k, v in dict.items %}
    <h4>{{k}} -- {{v}}</h4>
{% endfor %}

 

 再看看列表,Django不支持range,所以只能迭代列表。

還是那串代碼

def test(request):
    d = {"今天": "天氣", "真不錯(cuò)": "對嗎?"}
    l1 = [1, 2, 3, 4]
    return render(request, "demo.html",
                  {"list1": l1, "dict": d}
                  )

 只是改了HTML

&lt;h1&gt;快看調(diào)用成功了沒有?&lt;/h1&gt;{% for i in list1 %}    &lt;h4&gt;{{list1}}&lt;/h4&gt;    &lt;h4&gt;{{i}}&lt;/h4&gt;    &lt;!--不能這樣輸出值--&gt;    &lt;h4&gt;{{list1.i}} 前面好像沒輸出&lt;/h4&gt;{% endfor %}

循環(huán)最后要使用endfor結(jié)束。另外,似乎不能通過列表值來訪問列表元素,導(dǎo)致{{list1.i}}沒有值 

 if語句

Django同樣支持條件語句。

<!--list = [1,2,3,4]-->
<!--list.1 = 2-->
{% if list.1 == 0 %}
    <h1>11111111111111111</h1>
{% elif list.1 == 1 %}
    <h1>2222222222222222222</h1>
{% else %}
    <h1>333333333333333333333</h1>
{% endif %}

 

靜態(tài)文件

為了能夠呈現(xiàn)更精美的內(nèi)容亦或者提高代碼編寫效率,我們往往會使用到一些靜態(tài)文件。

在開發(fā)過程中一般將圖片,插件,css,js等當(dāng)做靜態(tài)文件處理。

存放目錄

靜態(tài)文件那么重要當(dāng)然有他們各自的歸宿,它們都存放在static目錄下。同樣的static目錄也在APP下面創(chuàng)建,每個(gè)APP都可以有一個(gè)專門存放靜態(tài)文件的目錄static。我們最好也能在static下對不同類型的文件進(jìn)行分類存放。如,圖片存放在img文件夾中,插件存放在plugins文件夾中,css文件存放在css文件夾,js存放在js文件夾。

文件調(diào)用

我以一張圖片為例,講解一下是如何調(diào)用它的。

我們先將圖片放入static的img文件夾內(nèi),

在demo.html模板中的body使用img元素即可調(diào)用圖片。一般的調(diào)用是這樣的

<img src="/static/img/1.jpg" alt="沒圖片的話點(diǎn)運(yùn)行重啟項(xiàng)目試試">

如果沒有顯示圖片的話重新運(yùn)行一下應(yīng)該就能加載了。

但是在Django中有專門調(diào)用靜態(tài)文件的語法,我們也建議使用Django專門調(diào)用靜態(tài)文件的方法。進(jìn)入設(shè)置,滑到底部有這一個(gè)變量

這里就記錄了我們靜態(tài)文件的存放位置。使用Django語法,如果靜態(tài)文件改名了,或者移到其他位置,直接在這里修改一下就好了,就不用在html引用靜態(tài)文件的時(shí)候逐個(gè)逐個(gè)修改路徑了。

現(xiàn)在就來看一下它的使用方法。在html頂部輸入

{% load static %}

聲明導(dǎo)入靜態(tài)文件

 不知道為什么我第二行會有紅線,可能pycharm不知道這是一個(gè)Django語句,不管它,接著輸入img圖片的導(dǎo)入路徑

<img src="{% static 'img/1.jpg'%}" alt="沒圖片的話點(diǎn)運(yùn)行重啟項(xiàng)目試試">

 點(diǎn)擊運(yùn)行

進(jìn)入網(wǎng)址http://127.0.0.1:8000/hd/ 即可完成圖片調(diào)用

css,js等文件導(dǎo)入的方法都是一樣的,只要我們知道了Django導(dǎo)入靜態(tài)文件的語法,渲染精致的html頁面就不成問題啦!現(xiàn)在快去試試

總結(jié)

無論是 {{ 變量 }} 還是 {% 表達(dá)式 %} 都屬于Django語法的一部分,在render函數(shù)內(nèi)部會將HTML中的DJango語句處理完并替換成相應(yīng)的字符串后再將標(biāo)準(zhǔn)的HTML格式內(nèi)容發(fā)送給瀏覽器。

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • Python3爬蟲之自動查詢天氣并實(shí)現(xiàn)語音播報(bào)

    Python3爬蟲之自動查詢天氣并實(shí)現(xiàn)語音播報(bào)

    這篇文章主要介紹了Python3爬蟲之自動查詢天氣并實(shí)現(xiàn)語音播報(bào),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Django?celery的替代品Dramatiq使用特性詳解

    Django?celery的替代品Dramatiq使用特性詳解

    這篇文章主要為大家介紹了Django?celery的替代品Dramatiq使用特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Python Numpy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差詳解

    Python Numpy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差詳解

    NumPy(Numerical Python)是Python的一種開源的數(shù)值計(jì)算擴(kuò)展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。本文主要介紹用NumPy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差,感興趣的小伙伴可以了解一下
    2021-11-11
  • 在Docker上部署Python的Flask框架的教程

    在Docker上部署Python的Flask框架的教程

    這篇文章主要介紹了在Docker上部署Python的Flask框架的教程,包括Docker容器內(nèi)外的網(wǎng)絡(luò)通信等,需要的朋友可以參考下
    2015-04-04
  • Tensorflow訓(xùn)練模型默認(rèn)占滿所有GPU的解決方案

    Tensorflow訓(xùn)練模型默認(rèn)占滿所有GPU的解決方案

    這篇文章主要介紹了Tensorflow訓(xùn)練模型默認(rèn)占滿所有GPU的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳解Python如何批量采集京東商品數(shù)據(jù)流程

    詳解Python如何批量采集京東商品數(shù)據(jù)流程

    這不快過年了,又是要買年貨,又是要給女朋友買禮物的,分析一下價(jià)格,看看哪些是真的降價(jià)了
    2022-01-01
  • Python遞歸函數(shù)反轉(zhuǎn)序列的實(shí)現(xiàn)

    Python遞歸函數(shù)反轉(zhuǎn)序列的實(shí)現(xiàn)

    本文主要介紹了Python遞歸函數(shù)反轉(zhuǎn)序列的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python進(jìn)階之協(xié)程詳解

    Python進(jìn)階之協(xié)程詳解

    這篇文章主要為大家介紹了Python進(jìn)階之協(xié)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 在Windows中安裝Spire.XLS?for?Python的操作指南

    在Windows中安裝Spire.XLS?for?Python的操作指南

    Spire.XLS?for?Python?是一款專業(yè)的?Python?Excel?庫,可用于在各種?Python?應(yīng)用程序中讀取、創(chuàng)建、編輯和轉(zhuǎn)換?Excel?(.xls?&?.xlsx)?文件,本文將介紹如何在?Windows?中安裝?Spire.XLS?for?Python,需要的朋友可以參考下
    2025-02-02
  • pip指定python位置安裝軟件包的方法

    pip指定python位置安裝軟件包的方法

    今天小編就為大家分享一篇pip指定python位置安裝軟件包的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論

攀枝花市| 青阳县| 江阴市| 霸州市| 田东县| 罗山县| 日照市| 衢州市| 布拖县| 静乐县| 微山县| 依安县| 齐河县| 祥云县| 宁德市| 越西县| 陇西县| 梧州市| 陵川县| 涡阳县| 定日县| 松原市| 奉贤区| 玉山县| 上蔡县| 思茅市| 西乌珠穆沁旗| 河曲县| 北票市| 连云港市| 栖霞市| 洞头县| 通州市| 新河县| 东兰县| 宜章县| 高雄市| 秦皇岛市| 长白| 舒兰市| 阿克苏市|