1.什么是框架?
框架就是程式的骨架,主體結構,也是個半成品,
2.框架的優缺點
可重用、成熟,穩健、易擴展、易維護,
3.Python中常見的框架
(1)大包大攬Django被官方稱之為完美主義者的web框架,它鼓勵快速開發和清潔,務實的設計,它是免費和開源的,Django 2.0 可謂是 Django 的里程碑版本,它于 2017 年 12 月正式發布,它移除了對 Python2.7 的支持,最少需要 3.4 以上版本.
(2)力求精簡web.py 和 Tornado,
(3) 新生代微框架Flask 和 Bottle,
4.MVT
MVC和MVT(T是模板的英文縮寫)
jango 的 MTV 模式本質上和 MVC 是一樣的,也是為了各組件間保持松耦合關系,只是定義上有些許不同,Django 的 MTV 分別是指:
- M 表示模型(Model):撰寫程式應有的功能,負責業務物件與資料庫的映射(ORM),
- T 表示模板 (Template):負責如何把頁面(html)展示給用戶,
- V 表示視圖(View):負責業務邏輯,并在適當時候呼叫 Model和 Template,
除了以上三層之外,還需要一個 URL 分發器,它的作用是將一個個 URL 的頁面請求分發給不同的 View 處理,View 再呼叫相應的 Model 和 Template,MTV 的回應模式如下所示:
簡易圖:

用戶操作流程圖:

決議:
用戶通過瀏覽器向我們的服務器發起一個請求(request),這個請求會去訪問視圖函式:
- a.如果不涉及到資料呼叫,那么這個時候視圖函式直接回傳一個模板也就是一個網頁給用戶,
- b.如果涉及到資料呼叫,那么視圖函式呼叫模型,模型去資料庫查找資料,然后逐級回傳,
視圖函式把回傳的資料填充到模板中空格中,最后回傳網頁給用戶,
5.Djiago框架特點
(1)快速開發:Django的宗旨在于幫助開發人員快速從概念到完成應用程式;
(2)安全可靠:Django認值對待安全性,幫助開發人員避免許多常見的安全錯誤;
(3)超可伸縮性:web上的一些最繁忙的網站利用了Django快速靈活擴展的能力,
6.Django安裝
(1)建議使用使用pip命令安裝
pip install django
可以通過==XXX指定版本
(2)檢測當前是否安裝Django及版本
python -m django --version
7.初始化專案
django-admin startproject 專案名稱
會產生一個以專案名稱命名的目錄(或稱為專案容器,可以有其他應用),主要結構如下:
專案名稱/ manage.py 專案名稱/ __init__.py settings.py urls.py wsgi.py
manage.py: 管理 Django 專案的命令列工具,一個命令列使用程式,可以讓用戶以各種方式與此Django專案進行互動,
里面一層的 專案名稱/ 目錄包含你的專案,它是一個純 Python 包,它的名字就是當你參考它內部任何東西時需要用到的 Python 包名, (比如 mysite.urls).
專案名稱/__init__.py:一個空檔案,告訴 Python 這個目錄應該被認為是一個 Python 包,
專案名稱/settings.py:Django 專案的組態檔,
專案名稱/urls.py:Django 專案的 URL 宣告,就像你網站的“目錄”,
專案名稱/wsgi.py:作為你的專案的運行在 WSGI 兼容的Web服務器上的入口,
8.運行開發服務器
python manager.py runserver
啟動默認的埠為8000,本地地址127.0.0.1(localhost),默認只能本地訪問網站,不支持遠程訪問.
如果需要其他人也可以訪問,需要指定0.0.0.0這個ip,就要加入引數:--host 0.0.0.0,
例如:指定其它埠和IP,
python manager.py runserver --host 0.0.0.0 --port 9008
-h HOST, --host HOST
-p PORT, --port PORT
9.應用的創建
Django自帶一個應用程式,可以自動生成應用程式的基本目錄結構,
創建應用的命令(記住:一定要在專案的當前目錄下去常見應用;一個專案可以包含多個應用):
python manage.py startapp 應用名
此時新建了一個以 應用名 命名的應用檔案,它的里面也創建了一些py檔案和包
admin.py :管理站點模型的宣告檔案,默認為空,
apps.py :應用資訊定義檔案,在其中生成了類Appconfig,類用于定義應用名等Meta資料,
migrations : 用于在之后定義參考遷移功能,
models.py : 添加模型層資料類的檔案,
test.py :測驗代碼檔案,
views.py :定義URL回應函式,
10.path() 函式
主要進行路由的匹配,
path(route,view,kwargs,name)
引數 route
route 是包含URL模式的字串,當 Django 回應一個請求時,它會從 urlpatterns 的第一項開始,按順序依次匹配串列中的項,直到找到匹配的項,然后執行該項映射的視圖函式或者 include 函式分發的下級路由,
引數 view
view 指的是處理當前 url 請求的視圖函式,當 Django 匹配到某個路由條目時,自動將封裝的 HttpRequest 物件作為第一個引數,被“捕獲”的引數以關鍵字引數的形式,傳遞給該條目指定的視圖函式,
引數 kwargs
kwargs 指使用字典關鍵字傳參的形式給關聯的目標視圖函式傳遞引數,
引數 name
name 給 URL 起個別名,常用于 url 的反向決議,避免在模板中適應硬編碼的方式使用嵌入 url,
11.mysqlclient
Django使用MySQL資料庫需要加載MySQLdb模塊,需要安裝mysqlclient.(Django2.2 版本之前安裝的是pymysql模塊,新版本使用的是mysqlclient)
12.HttpResponse物件
視圖在接收請求并處理后,必須回傳HttpResponse物件或子物件,HttpRequest物件由Django創建,HttpResponse物件由開發人員創建,
from django.http import HttpResponse
視圖在接收請求并處理后,必須回傳HttpResponse物件或子物件,HttpRequest物件由Django創建,HttpResponse物件由開發人員創建,
13.Django處理一個請求的程序(步驟)
(1)首先Django確定要使用的根URLconf模塊,通過ROOT_URLCONF來設定,具體在settings.py組態檔中,但是如果傳入HttpRequest物件具有urlconf屬性(由中間件設定),則其值將用于替換ROOT_URLCONF設定,
(2)Django加載該Python模塊并查找該變數urlpatterns.它是django.urls.path() 和(或)django.urls.re_path()實體的序列(sequence).
(3) Django按順序運行每個URL模式,并在匹配所請求的URL的第一個URL中停止,
(4)一旦正則運算式匹配,Django將匯入并呼叫給定的視圖,這是一個簡單的Python函式(或基于類的視圖),該視圖會獲得如下引數:
*** 一個HttpRequest實體;
*** 如果匹配的正則運算式沒有回傳任何命名組,那么來自正則運算式的匹配將做為位置引數提供,
*** 關鍵字引數由正則運算式匹配的任何命名組組成,由可選kwargs引數中指定的任何引數覆寫,django.urls.path()、django.urls.re_path(),
(5)如果沒有正則運算式匹配,或者在此程序中的任何一點出現例外,Django將呼叫適當的錯誤處理視圖,
14. URL的命名組
(1)在URL配置中要傳遞引數,一般使用正則運算式非命名組(通過括號)捕獲URL定位,并將它們作為位置引數傳遞給視圖,
(2)在更高級的使用中,可以使用正則運算式命名組來捕獲URL定位,并將它們作為關鍵字引數傳遞給視圖,
(3)在Python正則運算式中,正則運算式命名組的語法是(?P<name>pattern),其中命名組中的命名就是name,并且pattern是某些匹配的模式,
15.URL的反向決議
如果在視圖、模板中使用硬編碼的鏈接,在urlcong發生改變時,維護是一件非常麻煩的事情,
*** 解決:在做鏈接時,通過指向urlconf的名稱,動態生成鏈接地址;
*** 視圖:使用django.core.urlresolvers.reverse()函式;
*** 模板:使用url模板標簽,
16.Django的Model模型介紹
模型是專案中的資料資訊源,它包含著儲存資料的必要欄位和行為,通常,每個模型對應資料庫中的一張表,每個屬性對應一個欄位,每個模型都是django.db.models.Model的一個Python子類,Django提供一套自動生成的用于資料庫訪問的API;模型與資料庫的關系是ORM關系(物件--關系--映射),使用模型的好處:Model是MVC框架中重要的一部分,負責在資料庫中存取資料,它實作了資料模型與資料庫的解耦,即不需要依賴于特定的資料庫,通過簡單的配置就可以輕松更換資料庫,
17.Model的開發流程
(1)在應用的models.py中定義模型類,要求繼承自models.Model,
(2)把應用加入到專案settings.py組態檔的INSTALLED_APPS項中,
(3)生成遷移檔案
python manage.py makemigrations
(4) 執行遷移
python manage.py migrate
注意:需要注意的是這兩個命令默認情況下是作用于全域,也就是對所有最新更改的models或者migrations下面的遷移檔案進行對應的操作,如果要想僅僅對部分app進行作用的話 則執行如下命令:
python manage.py makemigrations appname
python manage.py migrate appname
如果要想精確到某一個遷移檔案則可以使用:
python manage.py migrate appname 檔案名
(5)使用模型類進行CRUD操作,
18.Model模型的實體
*** 模型實體物件是通過objects屬性獲取,即Django為模型類提供的管理器,
objects:是Manager型別的物件,用于與資料庫進行互動,
***實體的方法:__str__(self):重寫object方法,此方法在將物件轉換成字串時會被呼叫;save():將模型物件保存到資料表中;delete():將模型物件從資料表中洗掉,
參考網址
1.djangoproject介紹
https://docs.djangoproject.com/en/4.0/
2.好評如潮Python Django全套教程
https://www.bilibili.com/video/BV1pq4y1W7a1?p=8
3.Django簡介
https://www.runoob.com/django/django-intro.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/419912.html
標籤:Python
