Django 框架基礎

Python web框架

本質

收發socket消息             --> 按照HTTP協議消息格式去解析消息

路徑和要執行的函數的對應關係   --> 主要的業務邏輯

字符串替換               --> 模板(特殊符號 --> 數據)

 

一個完整得請求流程:

0. 啓動服務端,等待客戶端(用戶的瀏覽器)來鏈接css

1. 在瀏覽器地址欄輸入URL,與服務端創建鏈接,瀏覽器發送請求python

2. 服務端收到請求消息,解析請求消息,根據路徑和函數的對應關係,找到將要執行的函數mysql

3. 執行函數,打開HTML文件,進行字符串替換,獲得一個最終要返回的HTML內容web

4. 按照HTTP協議的消息格式要求,把HTML內容回覆給用戶瀏覽器(發送響應)sql

5. 瀏覽器收到響應的消息以後,按照HTML的規則渲染頁面數據庫

6. 關閉鏈接django

 

socket服務端功能劃分:

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 輕量級

 

Django框架

Django框架模式

MVC:

  模型(Model)

  視圖(View)

  控制器(Controller)

具備耦合性低、重用性高、生命週期成本低等優勢。

 

Django的MTV模式

  • Model(模型):    負責業務對象與數據庫的對象(ORM)
  • Template(模版):    負責如何把頁面展現給用戶
  • View(視圖):     負責業務邏輯,並在適當的時候調用Model和Template

此外,Django還有一個 urls 分發器,它的做用是將一個個URL的頁面請求分發給不一樣的view處理,view再調用相應的Model和Template

    圖示

   

新建Django項目

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端口啓動

 

 

Django 項目的重要組成文件

 項目/項目名/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 文件

保存業務的主要邏輯實現功能代碼

 

 

ORM介紹及使用準備

優點

優勢:  

  簡單,不用本身寫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	# 上傳執行命令
相關文章
相關標籤/搜索