一、Django簡介
Django是用Python開發的一個免費開源的Web框架,可以用于快速搭建高性能,優雅的網站!
初次發布于2005年7月,并于2008年發布了第一個正式版本1.0。
官方文檔: https://www.djangoproject.com/
二、Django特點
- 強大的數據庫功能: 擁有強大的數據庫操作接口(QuerySet API),如需要也能執行原生SQL。
- 自帶強大的后臺: 幾行簡單的代碼就讓你的網站擁有一個強大的后臺,輕松管理內容!
- 優雅的網址: 用正則匹配網址,傳遞到對應函數,隨意定義,如你所想!
- 模板系統: 強大,易擴展的模板系統,設計簡易,代碼,樣式分開設計,更容易管理。
(注:前后端分離時,也可以用Django開發API,完全不用模板系統。) - 緩存系統,與Memcached, Redis等緩存系統聯用,更出色的表現,更快的加載速度。
- 國際化,完全支持多語言應用,允許你定義翻譯的字符,輕松翻譯成不同國家的語言。
三、MVC模式
MVC是一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件中,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
- Model(模型)
應用程序中用于處理應用程序數據邏輯部分;
通常模型對象負責在數據庫中存取數據;
- View(視圖)
應用程序中處理數據顯示部分;
通常視圖是依據模型數據創建的;
- Controller(控制器)
應用程序中處理用戶交互部分;
通常控制器負責從視圖中讀取數據,控制用戶輸入,并向模型發送數據;
優點: 降低各個功能模塊之間的耦合性,方便變更,更容易重構代碼,最大程度上實現代碼的重用。
四、MTV模式
本質上MTV與MVC模式沒有什么區別,也是各組件之間為了保持松耦合關系,只是定義上有些不同。
- Model(模型)
負責業務對象與數據庫對象(ORM)
- Template(模板)
負責如何把頁面展示給用戶
- View(視圖)
負責業務邏輯,并在適當的時候調用Model和Template
Django還有一個url分發器,它的作用是將一個個URL的頁面請求分發給不同的view處理,view再調用相應的Model和Template。
五、Django環境搭建
-
Django版本選擇
Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3. Django 1.6.x 支持 Python 2.6.X, 2.7.X, 3.2.X 和 3.3.X Django 1.7.x 支持 Python 2.7, 3.2, 3.3, 和 3.4 (注意:Python 2.6 不支持了) Django 1.8.x 支持 Python 2.7, 3.2, 3.3, 3.4 和 3.5. (長期支持版本 LTS) Django 1.9.x 支持 Python 2.7, 3.4 和 3.5. 不支持 3.3 了 Django 1.10.x 支持 Python 2.7, 3.4 和 3.5 Django 1.11.x 支持 Python 2.7, 3.4, 3.5 和 3.6(長期支持版本 LTS) Django 2.0.x 支持 Python 3.4, 3.5 和 3.6 (注意,不再支持 Python 2)
-
pip安裝(如果有直接跳過)
- 下載get-pip.py文件(Linux, Mac OSX, Windows都可用) https://bootstrap.pypa.io/get-pip.py - 安裝(在終端中運行) $ python get-pip.py 備注: 當Python2.x和Python3.x共存的時候要區分是哪個版本需要安裝;
pip更新(Linux或MacOS): pip install -U pip
pip更新(Windows): python -m pip install -U pip
-
安裝Django
- 安裝 $ pip install Django==1.11.4 - 驗證是否成功() 進入到python環境(終端中輸入python) >>> import django >>> django.get_version() '1.11.4'
操作時,請切換到python3的虛擬環境中!
六、Django項目創建
- 新建Django項目:
$ django-admin startproject projectName
- 目錄層級說明:
manage.py 一個命令行工具,可以使我們多種方式對Django項目進行交互
projectName/__init__.py 一個空文件,告訴python這個目錄被看做一個python包(有這個能稱之為包)
projectName/settings.py 項目的配置文件
projectName/urls.py 項目URL聲明(路由器)
projectName/wsgi.py 項目與WSGI兼容的Web服務器入口(網關接口,通常用在現線上環境部署)
- 項目的運行:
$ python manage.py runserver
$ python manage.py runserver 0.0.0.0:8000
$ python manage.py runserver 0:8000 # 0.0.0.0簡寫方式
- settings.py項目配置文件
BASE_DIR 項目根目錄
SECRET_KEY 秘鑰
DEBUG 調試的開啟
ALLOWED_HOSTS 允許訪問的主機
INSTALLED_APPS 安裝的應用
MIDDLEWARE 中間件
ROOT_URLCONF 站點url配置
TEMPLATES 模板
WSGI_APPLICATION wsig應用
DATABASES 數據庫
AUTH_PASSWORD_VALIDATORS 密碼驗證規則
LANGUAGE_CODE 語言(中文: zh-hans)
TIME_ZONE 時區 (中國時區: Asia/Shanghai)
- 站點管理的漢化版(在settings.py中替換以下內容即可)
LANGUAGE_CODE = 'en-us' 替換 LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'UTC' 替換 TIME_ZONE = 'Asia/Shanghai'
備注: Linux或Mac下,直接在終端中操作;而在Windows中在cmd中操作(開始 -> 搜索cmd)
Linux中輸入tree可以看到具體的目錄結構(樹狀)
七、創建應用
要先進入項目目錄下,cd projectName
然后執行下面的命令:
$ python3 manage.py startapp appName
項目文件說明:
admin.py 站點配置
models.py 模型
views.py 視圖
其實一個項目中可以創建多個應用;
sqlite是輕量級小型數據庫(嵌入級數據庫),在Django中默認使用的就是sqlite【一般在手機APP中都會使用到這個sqlite】
八、激活應用
在settings.py
文件中,將appName
應用加入到INSTALL_APPS
選項中.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appName' # 添加自己的應用
]
請求流程: 用戶請求 -> urls -> views -> templates -> 用戶響應 【從后往前寫】
九、視圖
- 方式一
def hello(request):
return HttpResponse('hello')
- 方式二
def hello(request):
# hello.html模板
return render(request, 'hello.html')
十、啟動服務器
語法:
python manage.py runserver ip:port
例如:
python manage.py runserver
備注:
IP可以不寫,代表即是本機IP
端口號默認是8000
啟動成功后,在瀏覽器可以看到”It worked!”
說明:
這是一個純python寫的輕量級web服務器,僅僅在開發測試階段中使用