Django講課筆記01:初探Django框架

文章目錄

  • 一、學習目標
  • 二、課程導入
    • (一)課程簡介
    • (二)課程目標
    • (三)適用人群
    • (四)教學方式
    • (五)評估方式
    • (六)參考教材
  • 三、新課講授
    • (一)Django簡介
    • (二)Django版本
      • 1. Django 1.11(2017年3月發布)
      • 2. Django 2.0(2017年12月發布)
      • 3、Django 2.1(2018年8月發布)
      • 4、Django 2.2(2019年4月發布)
      • 5、Django 3.0(2019年12月發布)
      • 6、Django 3.1(2020年8月發布)
      • 7、Django 3.2(2021年4月發布)
      • 8、Django 4.0(2022年12月發布)
      • 9、Django 5.0(2023年12月發布)
    • (三)Django與Python的對應關系
    • (四)Django的特點
    • (五)MVC模式
      • 1、MVC概念
      • 2、MVC示意圖
      • 3、MVC優勢
    • (六)MVT模型
      • 1、MTV定義
      • 2、MTV示意圖
      • 3、MTV優勢
    • (七)Web開發前端和后端
      • 1、Web前端開發
      • 2、Web后端開發
  • 四、課堂小結

一、學習目標

  1. 了解Django框架
  2. 了解Django版本與Python版本的對應關系
  3. 了解Django的特點
  4. 了解MVC模式的優勢
  5. 了解MTV模式的優勢

二、課程導入

(一)課程簡介

  • Django是一款基于Python語言的開源Web應用框架,以其高效、簡潔的設計而備受開發者歡迎。本課程旨在向學生介紹Django框架的基本概念、核心特性以及與Python語言的結合。在學習Django之前,建議學生具備HTML、CSS和JavaScript的基礎知識,以更好地理解和應用框架。

(二)課程目標

  1. Django框架基礎:學生將了解Django框架的核心概念,包括模型(Model)、視圖(View)、模板(Template)等。
  2. 版本與對應關系:學習Django不僅需要了解其基礎,還需要明確不同版本與Python版本之間的對應關系,確保在實際開發中選擇合適的環境。
  3. Django特點:了解Django的特點,包括對象關系映射(ORM)、URL設計、模板系統等,為構建高效的Web應用奠定基礎。
  4. MVC與MVT:對比傳統的MVC(Model-View-Controller)模式和Django采用的MVT(Model-View-Template)模式,理解其優勢和適用場景。

(三)適用人群

  • 本課程適合有一定Python編程基礎,同時對Web開發有興趣的學生。特別推薦已經學習過HTML、CSS和JavaScript的同學,以更好地理解Django框架的前后端交互。

(四)教學方式

  1. 理論講解:介紹Django框架的基本概念、版本與對應關系、特點以及MVT模型等。
  2. 實際操作:通過實例演示,帶領學生搭建Django開發環境,創建簡單的Web應用,并進行基本的功能開發。
  3. 項目實踐:學生將參與一個小型Django項目,通過實際開發提升對框架的熟練程度。

(五)評估方式

  1. 考勤:占總成績20%,要求學生積極參與課堂討論和實際操作。
  2. 作業:占總成績30%,包括完成課后作業、小項目以及相關實踐任務。
  3. 期末檢測:占總成績50%,考察學生對Django框架的理解程度,包括理論知識和實際應用能力。

(六)參考教材

  • 《精通Django 3 Web開發》
    在這里插入圖片描述
  • Django 4 中文教程(https://www.w3cschool.cn/django4/)
    在這里插入圖片描述
  • 通過本課程的學習,學生將建立起對Django框架的深刻理解,為未來的Web開發工作奠定堅實的基礎。

三、新課講授

(一)Django簡介

  • Django,誕生于2005年7月,是一款遵守BSD版權的開源Web應用框架。以其MVT設計模式著稱,模型(Model)、視圖(View)和模板(Template)的巧妙結合使得Web開發更為高效。Django不僅提供了強大的對象關系映射(ORM)功能,還擁有靈活的URL設計和可擴展的模板系統。作為Python語言的杰出代表,Django在構建高質量、可維護性強的Web應用方面表現出色。

(二)Django版本

在這里插入圖片描述

  • Django是一個開源的Web應用框架,自2017年以來,經歷了多個版本的演化和更新,不斷提升其功能和性能。以下是Django從2017年到2023年的主要版本演化情況:

1. Django 1.11(2017年3月發布)

  • 引入了Subquery表達式,增強了數據庫查詢功能。
  • 提供了更好的Template模塊,改進了模板渲染引擎。

2. Django 2.0(2017年12月發布)

  • 棄用了對Python 2的支持,僅支持Python 3.4及以上版本。
  • 引入了path()和re_path()等新的URL模式匹配函數。
  • 改進了Model和QuerySet,增加了新的數據庫特性。

3、Django 2.1(2018年8月發布)

  • 加強了對Python 3.7的支持。
  • 引入了django.db.models.JSONField,提供對JSON數據的原生支持。
  • 增加了django.test模塊中的新功能,簡化了測試流程。

4、Django 2.2(2019年4月發布)

  • 提供了對MariaDB數據庫的支持。
  • 引入了django.test.Client的ASGI支持,為異步視圖提供更好的測試工具。
  • 更新了security.txt模板,幫助網站所有者定義安全報告的接收方式。

5、Django 3.0(2019年12月發布)

  • 引入了支持ASGI(異步服務器網關接口)的Django Channels,使Django能夠處理異步請求。
  • 移除了對Python 3.5的支持,僅支持Python 3.6及以上版本。
  • 改進了Model和QuerySet,增加了更多數據庫相關功能。

6、Django 3.1(2020年8月發布)

  • 加強了django.db.models.JSONField,支持更多數據庫后端。
  • 引入了StrictDateTime,在模型中使用DateTimeField時提供更加嚴格的日期時間處理。
  • 更新了EmailValidator,支持國際化域名(IDN)。

7、Django 3.2(2021年4月發布)

  • 提供了對PostgreSQL 13的支持。
  • 引入了django.views.View的新特性,支持基于類的視圖的更多定制選項。
  • 改進了Model,支持更多數據庫相關特性。

8、Django 4.0(2022年12月發布)

  • 加強對Python 3.9及以上版本的支持。
  • 引入更多先進的功能,以適應Web開發的最新趨勢和需求。

9、Django 5.0(2023年12月發布)

  • Django 5.0 支持 Python 3.10、3.11 和 3.12。開發團隊建議用戶使用每個 Python 分支的最新版本。
  • Django 5.0 引入了字段組 (field group) 和字段組模板 (field group templates) 的概念。該特性簡化了 Django 表單字段相關元素的渲染,例如標簽、小部件、幫助文本和錯誤等。
  • 新的 Field.db_default 參數用于設置數據庫計算 (database-computed) 的默認值。
  • 新的 GeneratedField 支持創建數據庫生成的列。該字段可在所有支持的數據庫后端上使用,以創建始終根據其他字段計算的字段。

(三)Django與Python的對應關系

Django版本Python版本
Django 1.8Python 2.7, 3.2, 3.3, 3.4, 3.5
Django 1.9, 1.10Python 2.7, 3.4, 3.5
Django 1.11Python 2.7, 3.4, 3.5, 3.6
Django 2.0Python 3.4, 3.5, 3.6, 3.7
Django 2.1, 2.2Python 3.5, 3.6, 3.7
Django 3.0, 3.1Python 3.6, 3.7, 3.8
Django 4.0, 4.1, 4.2Python 3.8, 3.9, 3.10
Django 5.0Python 3.10, 3.11, 3.12

(四)Django的特點

  • Django以其卓越的特點而聞名于業界,讓我們一起深入了解這些特性。

  • 首先,Django采用了強大的對象關系映射(ORM)機制,通過映射類構建數據模型,實現了業務對象與數據庫的精準映射。這使得開發者可以更專注于業務邏輯,而無需過多關心數據庫底層細節。

  • 在URL設計方面,Django展現了其靈活性和強大性。它支持設計任意URL,并可運用正則表達式實現更加復雜的URL匹配,為開發者提供了極大的設計自由度。

  • Django的模板系統同樣令人驚嘆。它提供了一套可擴展的模板語言,支持模板之間的繼承,使得頁面設計變得高效而靈活。開發者可以輕松創建出美觀而富有交互性的頁面。

  • 在表單處理方面,Django引入了便捷的表單模型生成機制,同時內置了有效性檢驗功能,使得表單處理變得更為簡單而安全。

  • Django還以其完善的Cache系統脫穎而出,支持多種緩存方式,為應對高流量和大規模應用提供了強有力的支持。

  • Auth認證系統是Django的又一瑰寶,它不僅提供了全面的用戶認證和權限設置功能,而且具有高度可擴展性,滿足了各種復雜業務場景的需求。

  • 國際化是當今Web應用不可或缺的一部分,而Django的內置國際化系統使得開發多語言網站變得輕而易舉。這為開發者打開了全球用戶的大門,讓應用更具國際競爭力。

  • 最后,Django還引以為豪的是其強大的Admin后臺系統。內置的管理系統不僅易于使用,而且具有強大的擴展性,讓開發者可以輕松管理和監控應用。

  • 總的來說,Django憑借其ORM、靈活的URL設計、強大的模板系統、方便的表單處理、完善的Cache系統、全面的Auth認證系統、國際化支持和強大的Admin后臺系統等特點,成為眾多開發者心中的首選。

(五)MVC模式

1、MVC概念

  • MVC(Model-View-Controller)是一種軟件架構模式,將軟件系統分為三個核心組件:模型(Model)、視圖(View)和控制器(Controller)。其優勢在于低耦合、開發迅速、部署便捷、可重用性高、維護成本低。模型負責業務邏輯和數據處理,視圖展示用戶界面,控制器協調模型和視圖之間的交互。簡而言之,MVC模式提供了一種有序且可維護的軟件設計方案。

2、MVC示意圖

  • MVC簡易圖
    在這里插入圖片描述
  • 用戶操作流程圖
    在這里插入圖片描述

3、MVC優勢

  • MVC(Model-View-Controller)模式的優勢顯而易見。首先,其低耦合性使得各組件相互獨立,修改其中一個不會影響其他部分,提高了系統的靈活性。其次,MVC架構能夠加速開發過程,通過明確的分工,開發人員能夠并行工作,提高了開發效率。部署方便,模塊化的設計使得系統部署更為簡便。可重用性高和維護成本低是由于模塊化結構的設計,使得代碼可維護性強,容易重用,降低了系統維護的難度。MVC的優勢在于提供了一種清晰、高效、可維護的軟件設計范式。

(六)MVT模型

1、MTV定義

  • MTV(Model-Template-View)模式是Django框架的軟件設計范式。模型(Model)負責數據處理,視圖(View)處理業務邏輯和調用模型、模板(Template)負責頁面渲染。MTV模式在實現各組件間松耦合的同時,保持了清晰的分工,使得開發者能夠更專注于業務邏輯和用戶界面。通過URL分發器協調各組件工作,實現了靈活、可維護的Web應用開發,使得開發過程更為高效。

2、MTV示意圖

在這里插入圖片描述

3、MTV優勢

  • MTV(Model-Template-View)模式是Django框架的軟件設計典范,具有顯著的優勢。該模式通過模型(Model)、模板(Template)、視圖(View)的清晰分工,實現了業務邏輯與數據模型的高度解耦。這種松耦合性使得開發更為靈活、可維護,并提高了代碼的可重用性。MTV模式同時充分發揮了Django框架在處理URL分發和頁面渲染方面的優勢,使得Web應用的開發更加高效,為開發者提供了強大的工具和結構。

(七)Web開發前端和后端

1、Web前端開發

  • Web前端開發是構建用戶在瀏覽器中交互的一部分,涉及HTML、CSS和JavaScript等技術。HTML定義頁面結構,CSS負責樣式美化,JavaScript實現頁面動態交互。前端開發關注用戶體驗,確保網站在各種設備上都具有良好的可訪問性。現代前端開發涉及眾多框架和工具,如React、Vue和Webpack等,提高開發效率。前端工程師需關注不斷變化的技術趨勢,同時與后端開發協同工作,共同構建功能強大、用戶友好的Web應用。

2、Web后端開發

  • Web后端開發是構建網站、應用程序背后邏輯和數據處理的關鍵部分。后端負責處理用戶請求,與數據庫交互,執行業務邏輯,并生成動態內容供前端展示。常見后端開發語言包括Python、Java、Node.js等,框架如Django、Flask、Spring等提供了便捷工具。合理的后端設計確保系統穩定、安全,并支持前后端協同工作。通過API,后端與前端實現數據交互,共同構建出功能強大、響應迅速的Web應用。

四、課堂小結

  • 在本節課中,我們深入探討了Django框架的基本概念、版本演化、特點以及與Python版本的對應關系。學生們不僅了解了Django的核心組件MVT模型,還學習了MVC模式的優勢。通過版本對比和演化歷程,我們更好地理解了Django的發展軌跡。此外,課程還簡要介紹了Web前端和后端開發,強調了它們在構建功能強大、用戶友好的Web應用中的協同作用。在接下來的實際操作和項目實踐中,學生將有機會深入應用所學知識,提升Django開發技能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208451.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208451.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208451.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android項目實戰之編輯器集成

引言 項目需要用到編輯器&#xff0c;采用RichEditor&#xff0c;如下效果 實現 1. 引入庫2 implementation jp.wasabeef:richeditor-android:2.0.0 2. XML <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…

LeetCode:2008. 出租車的最大盈利(dp C++)

目錄 2008. 出租車的最大盈利 題目描述&#xff1a; 實現代碼與解析&#xff1a; DP 二分&#xff08;兩種寫法&#xff09; 原理思路&#xff1a; 2008. 出租車的最大盈利 題目描述&#xff1a; 你駕駛出租車行駛在一條有 n 個地點的路上。這 n 個地點從近到遠編號為 1 …

如何使用 Wordpress?托管, 網站, 插件, 緩存

這是該系列教程的第一個教程&#xff0c;最終將在運行高性能 LEMP 堆棧的阿里云 ECS 實例上運行一個新的 WordPress 站點。 在本教程中&#xff0c;我們將創建一個運行 Ubuntu 16.04 的實例&#xff0c;然后通過創建超級用戶并禁用 root 登錄來保護服務器&#xff0c;最后配置…

持續集成交付CICD:使用Maven命令下載Nexus制品

目錄 一、實驗 1.Maven安裝 2.Nexus搭建公共組倉庫及Maven全局配置文件 3.使用Maven命令下載Nexus制品 一、實驗 1.Maven安裝 &#xff08;1&#xff09;CentOS環境安裝步驟 tar -xf apache-maven-3.8.6-bin.tar.gz #解壓 mv apache-maven-3.8.6 /usr/local/maven #移動…

如何進行更好的面試回復之緩存函數在項目中的性能優化?

緩存函數是一種提高函數性能的技術&#xff0c;在函數被調用時&#xff0c;會將計算結果緩存起來&#xff0c;以便在后續的調用中直接返回緩存的結果&#xff0c;從而減少了重復計算的時間。 緩存函數的實現通常包括兩個步驟&#xff1a; 判斷緩存是否存在&#xff1a;在函數被…

提取視頻光流成幀并寫入視頻中

修改一下配置文件就可以運行了 配置文件 config.py video_path xxxx/dataset/data/huaping/BXDQ05-花屏-1.mp4#要處理的視頻路徑 frame_path xxxx/dataset/frame#處理成幀之后保存的路徑 flow_path xxxx/dataset/flow#處理成光流之后保存的路徑 save_video_path xxxx/fe…

自動補全的 select antd react

自動補全的 select antd react 文檔&#xff1a;自動補全的 select antd react.note 鏈接&#xff1a;http://note.youdao.com/noteshare?idf5e4a93d2b9d6be8e459edd4eb86323b&sub19796E9BC04D4ABD9ACE325FDFF59B0E 添加鏈接描述 import React, { useState, useRef } from…

【1day】泛微e-office OA系統xml.php 文件 SORT_ID 參數 SQL 注入漏洞學習

注:該文章來自作者日常學習筆記,請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與作者無關。 目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現

理解傳統模式與互聯網時代 消費行為模型 AIDMA , AISAS , SICAS

1 AIDMA與AISAS 消費行為模型&#xff0c;以及所誕生的IT崗位 1.1 傳統市場營銷消費行為模型 AIDMA模型&#xff1a;Attention&#xff08;吸引&#xff09;&#xff0c;Interest &#xff08;興趣&#xff09;&#xff0c;Desire&#xff08;欲望&#xff09; &#xff0c;Me…

LeetCode 76. 最小覆蓋子串 滑動窗口框架

雙指針的特殊應用&#xff1a;滑動窗口 代碼 題目鏈接&#xff1a;https://leetcode.cn/problems/minimum-window-substring/description/ 不說廢話&#xff0c;直接貼代碼&#xff1a; static string minWindow(string s, string t) {// need記錄需要匹配的字符串t中每個字…

? Mac IDEA使用并運行項目

? IDEA導入項目并運行 Mac IDEA使用 (1) 倉庫導入 通過獲取giett倉庫包的url&#xff0c;在idea中導入項目 在gitee里獲取項目的ur打開idea&#xff0c;點擊 File->new->Project from Version Control (2) 創建數據庫ry并導入數據腳本 &#xff08;3&#xff09;修改配…

華為配置Smart Link主備備份示例

定義 Smart Link&#xff0c;又叫做備份鏈路。一個Smart Link由兩個接口組成&#xff0c;其中一個接口作為另一個的備份。Smart Link常用于雙上行組網&#xff0c;提供可靠高效的備份和快速的切換機制。 Monitor Link是一種接口聯動方案&#xff0c;它通過監控設備的上行接口…

npm私有源構建項目下載依賴報錯

Jenkins構建項目報錯&#xff0c;依賴找不到 Error: Couldnt find any versions for "babel/helper-module-imports" that matches "^7.22.15"at MessageError.ExtendableBuiltin (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/…

log4j(日志的配置)

日志一般配置在resources的config下面的&#xff0c;并且Util當中的initLogRecord中的initLog&#xff08;&#xff09;方法就是加載這個log4j.properties的. 首先先看log4j.properties的配置文件 log4j.rootLoggerdebug, stdout, Rlog4j.appender.stdoutorg.apache.log4j.Co…

高性能和多級高可用,云原生數據庫 GaiaDB 架構設計解析

1 云原生數據庫和 GaiaDB 目前&#xff0c;云原生數據庫已經被各行各業大規模投入到實際生產中&#xff0c;最終的目標都是「單機 分布式一體化」。但在演進路線上&#xff0c;當前主要有兩個略有不同的路徑。 一種是各大公有云廠商選擇的優先保證上云兼容性的路線。它基于存…

考研真題數據結構

【2021年山西大學真題】將二叉樹中所有非終端結點的左右子樹交換位置&#xff0c;可以得到原二叉樹的 鏡像二叉樹&#xff0c;如圖。假設二叉樹的存儲形式為&#xff08;lchild&#xff0c;data&#xff0c;rchild&#xff09;&#xff0c;給出求鏡像二叉樹的算法: &#xff0…

Sql Server Management Studio連接Mysql

目標 已知mysql連接參數&#xff08;地址和用戶&#xff09;&#xff0c;期望通過Microsoft Sql Server Management Studio &#xff08;以下簡稱MSSSMS&#xff09;連接Mysql&#xff0c;在MSSSMS中直接查詢或修改Mysql中的數據。 下載MySql Connector/ODBC并安裝&#xff0c…

使用poi-tl填充word模板,并轉化為pdf輸出

后端 依賴 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version> </dependency>Word版本 Word版本填充代碼 // 培訓詳情HashMap<String, Object> textMap new Ha…

maven環境搭建

maven歷史版本下載&#xff1a;https://archive.apache.org/dist/maven/ 新建系統變量編輯Path&#xff0c;添加bin目錄mvn -v測試查看版本號conf目錄下新建repository文件夾&#xff0c;作為本地倉庫 settings.xml <?xml version"1.0" encoding"UTF-8&…

2312d,d語言來綁定C++和rust

原文 各編譯語言相同概念 1,按可重用函數拆分代碼. 2,由源碼中的函數名生成的串來標識函數.如,g為void foo()生成_Z3foov的標識.此串總是是可重現的;如,Linux上的Clang和GCC都遵循ItaniumCABI約定來裝飾函數名. 3,在內存中的特定位置存儲該函數的所有參數,然后用調用或等效指…