Django框架第十一講-模板的定義、反向解析
jango模板介紹
- 作為Web框架,Django提供了模板,可以很便利的動態生成HTML
- 模版系統致力于表達外觀,而不是程序邏輯
- 模板的設計實現了業務邏輯(view)與顯示內容(template)的分離,一個視圖可以使用任意一個模板,一個模板可以供多個視圖使用
Django模板包含
- HTML的靜態部分
- 動態插入內容部分
- Django模板語言,簡寫DTL,定義在django.template包中
- 由startproject命令生成的settings.py定義關于模板的值:
- DIRS定義了一個目錄列表,模板引擎按列表順序搜索這些目錄以查找模板源文件
- APP_DIRS告訴模板引擎是否應該在每個已安裝的應用中查找模板
- 常用方式:在項目的根目錄下創建templates目錄,設置DIRS值
DIRS=[os.path.join(BASE_DIR,"templates")]
Django模板處理
- Django處理模板分為兩個階段
- Step1 加載:根據給定的標識找到模板然后預處理,通常會將它編譯好放在內存中
loader.get_template(template_name),返回一個Template對象
- Step2 渲染:使用Context數據對模板插值并返回生成的字符串
Template對象的render(RequestContext)方法,使用context渲染模板
快捷函數
- 為了減少加載模板、渲染模板的重復代碼,django提供了快捷函數
- render_to_string("")
- render(request,'模板',context)
Django定義模板
- 模板語言包括
- 變量
- 標簽 { % 代碼塊 % }
- 過濾器
- 注釋{# 代碼或html #}
變量
{{ variable }}
- 當模版引擎遇到一個變量,將計算這個變量,然后將結果輸出
- 變量名必須由字母、數字、下劃線(不能以下劃線開頭)和點組成
- 當模版引擎遇到點("."),會按照下列順序查詢:
字典查詢,例如:foo["bar"]
- 屬性或方法查詢,例如:foo.bar
- 數字索引查詢,例如:foo[bar]
- 如果變量不存在, 模版系統將插入'' (空字符串)
- 在模板中調用方法時不能傳遞參數
在模板中調用對象的方法
{{hero.showName}} 標簽
- 語法:{ % tag % }
- 作用
- 在輸出中創建文本
- 控制循環或邏輯
- 加載外部信息到模板中供以后的變量使用
- for標簽
{ %include "foo/bar.html" % }
{ % url 'name' p1 p2 %}
- csrf_token:這個標簽用于跨站請求偽造保護
{ % csrf_token %}
- 布爾標簽:and、or,and比or的優先級高
- block、extends:詳見“模板繼承”
- autoescape:詳見“HTML轉義”
過濾器
- 語法:{ { 變量|過濾器 }},例如{ { name|lower }},表示將變量name的值變為小寫輸出
- 使用管道符號 (|)來應用過濾器
- 通過使用過濾器來改變變量的計算結果
- 可以在if標簽中使用過濾器結合運算符
if list1|length > 1
name|lower|upper
list|join:", "
- default:如果一個變量沒有被提供,或者值為false或空,則使用默認值,否則使用變量的值
value|default:"什么也沒有"
value|date:'Y-m-d'
注釋
{#...#}
{# { % if foo % }bar{ % else % } #}
點擊關注發私信(基礎視頻),即可獲取下載鏈接:
板介紹
- 模板符號
談到Python的Django框架的基礎知識時,下面是一些你應該知道的要點:
- 安裝和創建項目:首先,你需要安裝Django框架。使用pip命令可以輕松地安裝Django。一旦安裝完成,你可以使用django-admin startproject命令來創建一個新的Django項目。
- 應用程序:Django的項目由多個應用程序組成,每個應用程序處理一個特定功能模塊。你可以使用python manage.py startapp命令創建新的應用程序。每個應用程序包含模型、視圖和模板等組件。
- 模型:Django的模型是與數據庫表對應的Python類。定義模型時,你可以指定表的結構和字段。Django的ORM(對象關系映射)將會自動創建和管理數據庫表。你可以使用簡單的Python代碼來執行數據庫相關的操作,如創建、讀取、更新和刪除數據。
- 視圖:Django的視圖是處理Web請求的函數或類。視圖接收請求并返回響應。你可以使用裝飾器來定義不同類型的視圖,如基于函數的視圖或基于類的視圖。視圖還可以包含業務邏輯和數據處理。
- URL配置:URL配置將URL映射到相應的視圖函數或類。在項目的urls.py文件中,你可以設置URL規則和路徑參數。每個應用程序都有自己的urls.py文件,可以將其包含在項目的urls.py文件中。
- 模板:Django的模板用于生成動態的HTML頁面。你可以在模板中使用變量、過濾器和標簽。模板可以幫助你將數據以動態方式嵌入到HTML頁面中,并實現頁面的復用。
- 靜態文件管理:Django可以管理并提供靜態文件,如CSS、JavaScript和圖像等。靜態文件可以通過STATIC_URL設置進行訪問,并在模板中使用靜態文件標簽進行引用。
- 表單處理:Django提供了強大的表單處理功能。你可以使用模型表單或自定義表單來處理用戶的輸入數據。Django的表單可以進行驗證和數據清理,以確保數據的有效性。
- 用戶認證和授權:Django提供了內置的用戶認證和授權功能。你可以使用Django的用戶模型來管理用戶賬戶、身份驗證和權限控制。
- 中間件:Django的中間件是處理請求和響應的插件。中間件可以攔截請求或響應,并執行一些自定義的處理。它們可以用于實現日志記錄、身份驗證、跨站請求偽造(CSRF)保護等功能。
這些是Django框架的一些基礎知識。通過學習和實踐,你將能夠構建功能強大的Web應用程序。Django有詳細的官方文檔和教程,供你參考和學習。
當你掌握了Django的基礎知識后,以下是一些進階的主題,可以幫助你深入學習和應用Django框架:
- 數據庫關系:學習如何在模型中定義不同類型的數據庫關系,如一對一、一對多和多對多關系。了解如何使用相關字段、反向關系和查詢集來處理復雜的關系數據。
- 視圖類和Mixin:除了函數視圖外,學習如何使用視圖類來組織和重用視圖邏輯。掌握常見的視圖類和Mixin,如ListView、DetailView和FormView,以及如何編寫自定義Mixin。
- Django Admin:深入了解Django Admin后臺管理界面,學習如何自定義后臺顯示、過濾、搜索、排序和行為等。掌握如何創建自定義的管理命令。
- 信號:學習如何使用Django的信號機制來實現模型的觸發事件,如保存、刪除等。了解常見信號的使用情景,并自定義信號處理函數。
- 緩存:了解如何使用Django的緩存框架來提升應用程序的性能。學習如何配置緩存后端、使用緩存裝飾器和模板標簽來緩存數據。
- 測試:深入學習如何編寫自動化測試,包括模型、視圖、表單和URL的測試。掌握單元測試、功能測試和集成測試的概念和實踐。
- 安全性:了解常見的Web應用安全問題,并學習如何在Django應用中應用最佳實踐,如跨站請求偽造(CSRF)保護、跨站腳本攻擊(XSS)防護、安全的URL構建等。
- 國際化和本地化:學習如何在Django應用中實現多語言支持和本地化。了解如何使用翻譯機制、區域設置和時區處理等功能。
- 第三方包和擴展:探索Django生態系統中豐富的第三方包和擴展,如Django REST framework、Django Celery、Django Crispy Forms等。了解如何集成和使用這些擴展來增強你的應用功能。
- 部署和擴展:學習如何將Django應用程序部署到生產環境中,包括配置服務器、使用Web服務器和應用服務器、使用容器化技術等。了解如何水平擴展和負載均衡你的應用。
這些是Django框架的一些進階主題,將幫助你更深入地使用和理解Django。不斷學習和實踐,將使你成為一個熟練的Django開發者。希望對你有所幫助!
、