收發socket消息 --> 按照HTTP協議消息格式去解析消息 路徑和要執行的函數的對應關係 --> 主要的業務邏輯 字符串替換 --> 模板(特殊符號 --> 數據)
一個完整得請求流程:
0. 啓動服務端,等待客戶端(用戶的瀏覽器)來鏈接css
1. 在瀏覽器地址欄輸入URL,與服務端創建鏈接,瀏覽器發送請求python
2. 服務端收到請求消息,解析請求消息,根據路徑和函數的對應關係,找到將要執行的函數mysql
3. 執行函數,打開HTML文件,進行字符串替換,獲得一個最終要返回的HTML內容web
4. 按照HTTP協議的消息格式要求,把HTML內容回覆給用戶瀏覽器(發送響應)sql
5. 瀏覽器收到響應的消息以後,按照HTML的規則渲染頁面數據庫
6. 關閉鏈接django
a. 負責與瀏覽器收發消息(socket通訊) --> wsgiref/uWsgi/gunicorn... b. 根據用戶訪問不一樣的路徑執行不一樣的函數 c. 從HTML讀取出內容,而且完成字符串的替換 --> jinja2(模板語言)
Python中 Web框架的分類:
按上面三個功能劃分:
1. 框架自帶a,b,c --> Tornado瀏覽器2. 框架自帶b和c,使用第三方的a --> Djangoapp
3. 框架自帶b,使用第三方的a和c --> Flask框架
按另外一個維度來劃分:
1. Django --> 大而全(你作一個網站能用到的它都有)
2. 其餘 --> Flask 輕量級
MVC:
模型(Model)
視圖(View)
控制器(Controller)
具備耦合性低、重用性高、生命週期成本低等優勢。
Django的MTV模式
- Model(模型): 負責業務對象與數據庫的對象(ORM)
- Template(模版): 負責如何把頁面展現給用戶
- View(視圖): 負責業務邏輯,並在適當的時候調用Model和Template
此外,Django還有一個 urls 分發器,它的做用是將一個個URL的頁面請求分發給不一樣的view處理,view再調用相應的Model和Template
圖示
Django安裝
pip3 install django==1.11.11 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ django==1.11.11
PyCharm安裝的時候:
注意不要勾選那個選項 ,不然會默認安裝最新版本,能夠右下角選擇版本
Django項目的啓動
命令行建立項目
django-admin.py startproject 項目名
pycharm 建立項目
File --> New project --> 左側選Django --> 右側填項目路徑,而且勾選python.exe
可選建立 自定義名字的一個APP
PyCharm啓動
點綠色的小三角,直接能夠啓動Django項目 (前提是小三角左邊是你的Django項目名)
命令行啓動
在項目的根目錄下(也就是有manage.py的那個目錄),運行:
python3 manage.py runserver IP:端口 --> 在指定的IP和端口啓動 python3 manage.py runserver 端口 --> 在指定的端口啓動 python3 manage.py runserver --> 默認在本機的8000端口啓動
項目/項目名/settings.py 文件
存放項目配置的參數文件
項目/項目名/urls.py 文件
保存業務的邏輯與路徑的對應關係
項目/static 文件夾
存放靜態文件的文件夾,如css,js,圖片等
靜態文件夾爲手動建立,所以須要在 setting.py 中添加此代碼
# 靜態文件保存目錄的別名 STATIC_URL = '/static/' # 全部靜態文件(css/js/圖片)都放在我下面你配置的文件夾中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
項目/templates文件夾
保存頁面展現文件存放目錄
項目/APP 文件夾
分支項目下的應用,方便咱們在一個大的Django項目中,管理實現不一樣的業務功能.
project --> 項目
APP --> 應用
建立APP的命令
命令行,在Django項目的根目錄輸入:
python3 manage.py startapp app名字建立APP後須要在 setting.py 的 INSTALLED_APPS 中加入一行新的
’app名字.apps.App名字Config’
項目/APP名/models.py 文件建立數據庫使用便捷的ORM方式,保存的數據庫表如今 models.py 中
項目/APP名/views.py 文件
保存業務的主要邏輯實現功能代碼
優點
優勢:
簡單,不用本身寫SQL語句
開發效率高
缺點:
記憶你ROM特殊的語法
相對於大神些的SQL語句,執行效率有差距
ORM的對應關係
類 ---> 數據表
對象 ---> 數據行
屬性 ---> 字段
ORM能作的事兒
操做數據表 --> 建立表/刪除表/修改表
操做數據行 --> 數據的增刪改查
ORM作不到的事
不能建立數據庫,本身動手建立數據庫
使用Django的ORM詳細步驟
1 . 本身動手建立數據庫
create database 數據庫名;2 . 在Django項目中設置鏈接數據庫的相關配置(告訴Django鏈接哪個數據庫)
# 數據庫相關的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 鏈接的數據庫類型 'HOST': '127.0.0.1', # 鏈接數據庫的地址 'PORT': 3306, # 端口 'NAME': "day61", # 數據庫名稱 'USER': 'root', # 用戶 'PASSWORD': '123456' # 密碼 } }3 . 告訴Django用pymysql代替默認的MySQLDB 鏈接MySQL數據庫
在項目/__init__.py文件中,寫下面兩句
import pymysql # 告訴Django用pymysql來代替默認的MySQLdb pymysql.install_as_MySQLdb()4 . 在app下面的models.py文件中定義一個類,這個類必須繼承models.Model
class 類名(models.Model): ...
建立後命令的執行數據庫的建立和修改都須要執行兩個命令
python3 manage.py makemigrations # 建立執行命令 python3 manage.py migrate # 上傳執行命令