整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Django框架第十一講-模板的定義、反向解析

          Django框架第十一講-模板的定義、反向解析

          jango模板介紹

          1. 作為Web框架,Django提供了模板,可以很便利的動(dòng)態(tài)生成HTML
          2. 模版系統(tǒng)致力于表達(dá)外觀,而不是程序邏輯
          3. 模板的設(shè)計(jì)實(shí)現(xiàn)了業(yè)務(wù)邏輯(view)與顯示內(nèi)容(template)的分離,一個(gè)視圖可以使用任意一個(gè)模板,一個(gè)模板可以供多個(gè)視圖使用

          Django模板包含

          1. HTML的靜態(tài)部分
          2. 動(dòng)態(tài)插入內(nèi)容部分
          3. Django模板語言,簡寫DTL,定義在django.template包中
          4. 由startproject命令生成的settings.py定義關(guān)于模板的值:
          5. DIRS定義了一個(gè)目錄列表,模板引擎按列表順序搜索這些目錄以查找模板源文件
          6. APP_DIRS告訴模板引擎是否應(yīng)該在每個(gè)已安裝的應(yīng)用中查找模板
          7. 常用方式:在項(xiàng)目的根目錄下創(chuàng)建templates目錄,設(shè)置DIRS值

          DIRS=[os.path.join(BASE_DIR,"templates")]

          Django模板處理

          • Django處理模板分為兩個(gè)階段
          • Step1 加載:根據(jù)給定的標(biāo)識(shí)找到模板然后預(yù)處理,通常會(huì)將它編譯好放在內(nèi)存中

          loader.get_template(template_name),返回一個(gè)Template對(duì)象

          • Step2 渲染:使用Context數(shù)據(jù)對(duì)模板插值并返回生成的字符串

          Template對(duì)象的render(RequestContext)方法,使用context渲染模板

          • 加載渲染完整代碼:

          快捷函數(shù)

          • 為了減少加載模板、渲染模板的重復(fù)代碼,django提供了快捷函數(shù)
          • render_to_string("")
          • render(request,'模板',context)

          Django定義模板

          1. 模板語言包括
          2. 變量
          3. 標(biāo)簽 { % 代碼塊 % }
          4. 過濾器
          5. 注釋{# 代碼或html #}

          變量

          • 語法:

          {{ variable }}

          1. 當(dāng)模版引擎遇到一個(gè)變量,將計(jì)算這個(gè)變量,然后將結(jié)果輸出
          2. 變量名必須由字母、數(shù)字、下劃線(不能以下劃線開頭)和點(diǎn)組成
          3. 當(dāng)模版引擎遇到點(diǎn)("."),會(huì)按照下列順序查詢:

          字典查詢,例如:foo["bar"]

          1. 屬性或方法查詢,例如:foo.bar
          2. 數(shù)字索引查詢,例如:foo[bar]
          • 如果變量不存在, 模版系統(tǒng)將插入'' (空字符串)
          • 在模板中調(diào)用方法時(shí)不能傳遞參數(shù)

          在模板中調(diào)用對(duì)象的方法

          • 在models.py中定義類HeroInfo

          • 在views.py中傳遞HeroInfo對(duì)象

          • 在模板detail.html中調(diào)用

          {{hero.showName}} 標(biāo)簽

          • 語法:{ % tag % }
          • 作用
          • 在輸出中創(chuàng)建文本
          • 控制循環(huán)或邏輯
          • 加載外部信息到模板中供以后的變量使用
          • for標(biāo)簽

          • if標(biāo)簽

          • comment標(biāo)簽

          • include:加載模板并以標(biāo)簽內(nèi)的參數(shù)渲染

          { %include "foo/bar.html" % }

          • url:反向解析

          { % url 'name' p1 p2 %}

          • csrf_token:這個(gè)標(biāo)簽用于跨站請(qǐng)求偽造保護(hù)

          { % csrf_token %}

          • 布爾標(biāo)簽:and、or,and比or的優(yōu)先級(jí)高
          • block、extends:詳見“模板繼承”
          • autoescape:詳見“HTML轉(zhuǎn)義”

          過濾器

          • 語法:{ { 變量|過濾器 }},例如{ { name|lower }},表示將變量name的值變?yōu)樾戄敵?/li>
          • 使用管道符號(hào) (|)來應(yīng)用過濾器
          • 通過使用過濾器來改變變量的計(jì)算結(jié)果
          • 可以在if標(biāo)簽中使用過濾器結(jié)合運(yùn)算符

          if list1|length > 1

          • 過濾器能夠被“串聯(lián)”,構(gòu)成過濾器鏈

          name|lower|upper

          • 過濾器可以傳遞參數(shù),參數(shù)使用引號(hào)包起來

          list|join:", "

          • default:如果一個(gè)變量沒有被提供,或者值為false或空,則使用默認(rèn)值,否則使用變量的值

          value|default:"什么也沒有"

          • date:根據(jù)給定格式對(duì)一個(gè)date變量格式化

          value|date:'Y-m-d'

          注釋

          • 單行注釋

          {#...#}

          • 注釋可以包含任何模版代碼,有效的或者無效的都可以

          {# { % if foo % }bar{ % else % } #}

          • 使用comment標(biāo)簽注釋模版中的多行內(nèi)容

          點(diǎn)擊關(guān)注發(fā)私信(基礎(chǔ)視頻),即可獲取下載鏈接:


          板介紹

          1. 模板符號(hào)

          談到Python的Django框架的基礎(chǔ)知識(shí)時(shí),下面是一些你應(yīng)該知道的要點(diǎn):


          1. 安裝和創(chuàng)建項(xiàng)目:首先,你需要安裝Django框架。使用pip命令可以輕松地安裝Django。一旦安裝完成,你可以使用django-admin startproject命令來創(chuàng)建一個(gè)新的Django項(xiàng)目。
          2. 應(yīng)用程序:Django的項(xiàng)目由多個(gè)應(yīng)用程序組成,每個(gè)應(yīng)用程序處理一個(gè)特定功能模塊。你可以使用python manage.py startapp命令創(chuàng)建新的應(yīng)用程序。每個(gè)應(yīng)用程序包含模型、視圖和模板等組件。
          3. 模型:Django的模型是與數(shù)據(jù)庫表對(duì)應(yīng)的Python類。定義模型時(shí),你可以指定表的結(jié)構(gòu)和字段。Django的ORM(對(duì)象關(guān)系映射)將會(huì)自動(dòng)創(chuàng)建和管理數(shù)據(jù)庫表。你可以使用簡單的Python代碼來執(zhí)行數(shù)據(jù)庫相關(guān)的操作,如創(chuàng)建、讀取、更新和刪除數(shù)據(jù)。
          4. 視圖:Django的視圖是處理Web請(qǐng)求的函數(shù)或類。視圖接收請(qǐng)求并返回響應(yīng)。你可以使用裝飾器來定義不同類型的視圖,如基于函數(shù)的視圖或基于類的視圖。視圖還可以包含業(yè)務(wù)邏輯和數(shù)據(jù)處理。
          5. URL配置:URL配置將URL映射到相應(yīng)的視圖函數(shù)或類。在項(xiàng)目的urls.py文件中,你可以設(shè)置URL規(guī)則和路徑參數(shù)。每個(gè)應(yīng)用程序都有自己的urls.py文件,可以將其包含在項(xiàng)目的urls.py文件中。
          6. 模板:Django的模板用于生成動(dòng)態(tài)的HTML頁面。你可以在模板中使用變量、過濾器和標(biāo)簽。模板可以幫助你將數(shù)據(jù)以動(dòng)態(tài)方式嵌入到HTML頁面中,并實(shí)現(xiàn)頁面的復(fù)用。
          7. 靜態(tài)文件管理:Django可以管理并提供靜態(tài)文件,如CSS、JavaScript和圖像等。靜態(tài)文件可以通過STATIC_URL設(shè)置進(jìn)行訪問,并在模板中使用靜態(tài)文件標(biāo)簽進(jìn)行引用。
          8. 表單處理:Django提供了強(qiáng)大的表單處理功能。你可以使用模型表單或自定義表單來處理用戶的輸入數(shù)據(jù)。Django的表單可以進(jìn)行驗(yàn)證和數(shù)據(jù)清理,以確保數(shù)據(jù)的有效性。
          9. 用戶認(rèn)證和授權(quán):Django提供了內(nèi)置的用戶認(rèn)證和授權(quán)功能。你可以使用Django的用戶模型來管理用戶賬戶、身份驗(yàn)證和權(quán)限控制。
          10. 中間件:Django的中間件是處理請(qǐng)求和響應(yīng)的插件。中間件可以攔截請(qǐng)求或響應(yīng),并執(zhí)行一些自定義的處理。它們可以用于實(shí)現(xiàn)日志記錄、身份驗(yàn)證、跨站請(qǐng)求偽造(CSRF)保護(hù)等功能。

          這些是Django框架的一些基礎(chǔ)知識(shí)。通過學(xué)習(xí)和實(shí)踐,你將能夠構(gòu)建功能強(qiáng)大的Web應(yīng)用程序。Django有詳細(xì)的官方文檔和教程,供你參考和學(xué)習(xí)。

          當(dāng)你掌握了Django的基礎(chǔ)知識(shí)后,以下是一些進(jìn)階的主題,可以幫助你深入學(xué)習(xí)和應(yīng)用Django框架:

          1. 數(shù)據(jù)庫關(guān)系:學(xué)習(xí)如何在模型中定義不同類型的數(shù)據(jù)庫關(guān)系,如一對(duì)一、一對(duì)多和多對(duì)多關(guān)系。了解如何使用相關(guān)字段、反向關(guān)系和查詢集來處理復(fù)雜的關(guān)系數(shù)據(jù)。
          2. 視圖類和Mixin:除了函數(shù)視圖外,學(xué)習(xí)如何使用視圖類來組織和重用視圖邏輯。掌握常見的視圖類和Mixin,如ListView、DetailView和FormView,以及如何編寫自定義Mixin。
          3. Django Admin:深入了解Django Admin后臺(tái)管理界面,學(xué)習(xí)如何自定義后臺(tái)顯示、過濾、搜索、排序和行為等。掌握如何創(chuàng)建自定義的管理命令。
          4. 信號(hào):學(xué)習(xí)如何使用Django的信號(hào)機(jī)制來實(shí)現(xiàn)模型的觸發(fā)事件,如保存、刪除等。了解常見信號(hào)的使用情景,并自定義信號(hào)處理函數(shù)。
          5. 緩存:了解如何使用Django的緩存框架來提升應(yīng)用程序的性能。學(xué)習(xí)如何配置緩存后端、使用緩存裝飾器和模板標(biāo)簽來緩存數(shù)據(jù)。
          6. 測試:深入學(xué)習(xí)如何編寫自動(dòng)化測試,包括模型、視圖、表單和URL的測試。掌握單元測試、功能測試和集成測試的概念和實(shí)踐。
          7. 安全性:了解常見的Web應(yīng)用安全問題,并學(xué)習(xí)如何在Django應(yīng)用中應(yīng)用最佳實(shí)踐,如跨站請(qǐng)求偽造(CSRF)保護(hù)、跨站腳本攻擊(XSS)防護(hù)、安全的URL構(gòu)建等。
          8. 國際化和本地化:學(xué)習(xí)如何在Django應(yīng)用中實(shí)現(xiàn)多語言支持和本地化。了解如何使用翻譯機(jī)制、區(qū)域設(shè)置和時(shí)區(qū)處理等功能。
          9. 第三方包和擴(kuò)展:探索Django生態(tài)系統(tǒng)中豐富的第三方包和擴(kuò)展,如Django REST framework、Django Celery、Django Crispy Forms等。了解如何集成和使用這些擴(kuò)展來增強(qiáng)你的應(yīng)用功能。
          10. 部署和擴(kuò)展:學(xué)習(xí)如何將Django應(yīng)用程序部署到生產(chǎn)環(huán)境中,包括配置服務(wù)器、使用Web服務(wù)器和應(yīng)用服務(wù)器、使用容器化技術(shù)等。了解如何水平擴(kuò)展和負(fù)載均衡你的應(yīng)用。

          這些是Django框架的一些進(jìn)階主題,將幫助你更深入地使用和理解Django。不斷學(xué)習(xí)和實(shí)踐,將使你成為一個(gè)熟練的Django開發(fā)者。希望對(duì)你有所幫助!


          主站蜘蛛池模板: 国产熟女一区二区三区四区五区| 久久精品中文字幕一区| 波多野结衣一区二区三区| 国产精品无码AV一区二区三区| 中文字幕乱码亚洲精品一区 | 一区二区视频传媒有限公司| 亚洲制服丝袜一区二区三区 | 日韩在线视频不卡一区二区三区| 天天躁日日躁狠狠躁一区| 夜色福利一区二区三区| 国产一区二区三区在线看片| 国产美女一区二区三区| 精品国产不卡一区二区三区| 精品乱人伦一区二区| 国精产品一区一区三区有限在线 | 亚欧色一区W666天堂| 区三区激情福利综合中文字幕在线一区| 精品无码一区二区三区电影| 鲁丝片一区二区三区免费| 中文字幕一区在线观看| 欲色影视天天一区二区三区色香欲| 国产日产久久高清欧美一区| 中文人妻无码一区二区三区 | 亚洲欧洲无码一区二区三区| 久久91精品国产一区二区| 少妇精品久久久一区二区三区 | 精品一区二区三区免费毛片爱| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲AV无码一区二区三区牛牛| 久久精品视频一区| 日本亚洲成高清一区二区三区| 精品无码国产一区二区三区AV| 亚洲一区二区三区电影| 一区二区和激情视频| 国产AV天堂无码一区二区三区 | 日本中文字幕在线视频一区| 国产美女av在线一区| 日韩在线视频不卡一区二区三区 | 亚洲午夜一区二区电影院| 亚洲乱码一区二区三区国产精品| 美女免费视频一区二区三区|