Django
: 發音爲 [ `dʒæŋɡəʊ ]. 名稱來源於比利時爵士音樂家 Django ReinhardtPython
語言寫的開源web開發框架, 發佈於2005年7月.Django
的主要目的是簡便、快速的開發數據庫驅動的網站.Django
強調代碼複用, 多個組件能夠很方便的以 「插件」
形式服務於整個框架. 有許多功能強大的第三方插件.Django
遵循MVC
設計模式. 可是有一個專有名詞 :MVT
MVC
全拼爲Model-View-Controller
MVC
核心思想 : 解耦
MVC
解析
M
全拼爲Model
, 主要封裝對數據庫層的訪問, 內嵌ORM框架, 實現面向對象的編程來操做數據庫.V
全拼爲View
, 用於封裝結果, 內嵌了模板引擎, 實現動態展現數據.C
全拼爲Controller
, 用於接收GET或POST請求, 處理業務邏輯, 與Model和View交互, 返回結果.Java、PHP、Python、...
中都有MVC
設計模式. MVT
全拼爲Model-View-Template
MVT
核心思想 : 解耦MVT
解析
M (模型)
全拼爲Model
, 與MVC中的M功能相同, 負責數據處理, 內嵌了ORM框架.V (視圖)
全拼爲View
, 與MVC中的C功能相同, 接收HttpRequest, 業務處理,返回HttpResponse.T (模板)
全拼爲Template
, 與MVC中的V功能相同, 負責封裝構造要返回的html, 內嵌了模板引擎.MVT和MVC
差別就在於黑箭頭標識出來的部分.學習 Django, 重點就是研究
Model-View-Template
三個模塊間如何協同工做及各自模塊的代碼如何編寫。html
耦合性:指軟件系統結構中各模塊間相互聯繫緊密程度的一種度量。python
內聚性:指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。web
在開發過程當中, 當須要使用python
的某些工具包/框架時須要聯網安裝sql
好比聯網安裝Django框架django1.8.2
版本shell
sudo pip install django==1.8.2
django1.8.2
安裝到/usr/local/lib/python版本/dist-packages
路徑下虛擬環境
虛擬環境
能夠搭建獨立的python運行環境
, 使得單個項目的運行環境與其它項目互不影響.虛擬環境
都位於/home/
下的隱藏目錄.virtualenvs
下安裝虛擬環境的命令 :數據庫
sudo pip install virtualenv sudo pip install virtualenvwrapper
建立虛擬環境的命令 :django
在python2中,建立虛擬環境編程
mkvirtualenv 虛擬環境名稱 例 : mkvirtualenv py_django
在python3中,建立虛擬環境設計模式
mkvirtualenv -p python3 虛擬環境名稱 例 : mkvirtualenv -p python3 py3_django
提示 :服務器
查看虛擬環境的命令 :
workon 兩次tab鍵
使用虛擬環境的命令 :
workon 虛擬環境名稱 例 :使用python2的虛擬環境 workon py_django 例 :使用python3的虛擬環境 workon py3_django
退出虛擬環境的命令 :
deactivate
刪除虛擬環境的命令 :
rmvirtualenv 虛擬環境名稱 例 :刪除虛擬環境py3_django 先退出:deactivate 再刪除:rmvirtualenv py3_django
python3版本下安裝django1.8.2的包 :
pip install 包名稱 例 : 安裝django1.8.2的包 pip install django==1.8.2
工具包安裝的位置 :
~/.virtualenvs/py_django/lib/python2.7/site-packages/
~/.virtualenvs/py3_django/lib/python3.5/site-packages
查看虛擬環境中安裝的包 :
pip freeze
BookManager
, 建立應用名稱爲Book
, 完成圖書信息
的維護.在~/Desktop/.../
目錄下建立項目BookManager
例 : 在桌面建立項目 cd ~/Desktop/
建立項目的命令 :
建立好項目就可使用PyCharm
打開.
django-admin startproject 項目名稱 例 :建立項目BookManager django-admin startproject BookManager
項目結構
BookManager
: 是與項目同名的文件, 內部包含以下項目的配置文件.
init.py
: 是表示文件BookManager
能夠被看成包使用.settings.py
: 是項目的總體配置文件.urls.py
: 是項目的URL
配置文件.wsgi.py
: 是項目與WSGI
兼容的Web服務器入口.manage.py
: 是項目運行的入口, 指定配置文件路徑.在BookManager
項目中, 建立應用Book
cd BookManager/ python manage.py startapp Book
項目結構
admin.py
: 是後臺的站點管理註冊文件.init.py
: 是表示文件Book
能夠被看成包使用.migrations
: 是作模型遷移的.models.py
: 是處理數據的.MVT
中的M
tests.py
: 是作測試用的.views.py
: 是處理業務邏輯的.MVT
中的V
虛擬環境py_django
下的python
which python 結果: /home/python/.virtualenvs/py_django/bin/python
虛擬環境py3_django
下的python
which python 結果: /home/python/.virtualenvs/py3_django/bin/python
Django
提供了一個純Python
編寫的輕量級web服務器
,
python manage.py runserver ip:端口
python manage.py runserver 172.16.21.25:8001 對應: http://172.16.21.25:8001/
ip和端口號能夠不寫, 默認ip爲127.0.0.1
;端口號爲8000
.
python manage.py runserver 對應: http://127.0.0.1:8000/
提示:若是項目的虛擬環境由py3_django
切換到py_django
時,須要同時切換測試服務器的虛擬環境到py_django
輸入http://127.0.0.1:8000/
便可訪問.
增長代碼、修改代碼、刪除代碼
服務器會自動重啓.按ctrl+c
中止服務器
如下爲書籍信息管理的數據關係:書籍和人物是 :一對多關係
要先分析出項目中所須要的數據, 而後設計數據庫表.
書籍信息表
字段名 | 字段類型 | 字段說明 |
---|---|---|
id | AutoField | 主鍵 |
name | CharField | 書名 |
id | name |
---|---|
1 | 西遊記 |
2 | 三國演義 |
人物信息表
字段名 | 字段類型 | 字段說明 |
---|---|---|
id | AutoField | 主鍵 |
name | CharField | 人名 |
gender | BooleanField | 性別 |
book | ForeignKey | 外鍵 |
id | name | gender | book |
---|---|---|---|
1 | 孫悟空 | False | 西遊記 |
2 | 白骨精 | True | 西遊記 |
3 | 曹操 | False | 三國演義 |
4 | 貂蟬 | True | 三國演義 |
MVT
設計模式中的Model
, 專門負責和數據庫交互.對應(models.py)
Model
中內嵌了ORM框架
, 因此不須要直接面向數據庫編程.模型類和對象
完成數據庫表的增刪改查
.ORM框架
就是把數據庫表的行與相應的對象創建關聯, 互相轉換.使得數據庫的操做面向對象.book = models.ForeignKey(BookInfo)
根據數據庫表的設計
在models.py
中定義模型類,繼承自models.Model
from django.db import models # 準備書籍列表信息的模型類 class BookInfo(models.Model): # 建立字段,字段類型... name = models.CharField(max_length=10) # 準備人物列表信息的模型類 class PeopleInfo(models.Model): name = models.CharField(max_length=10) gender = models.BooleanField() # 外鍵約束:人物屬於哪本書 book = models.ForeignKey(BookInfo) # 模型類準備好以後,須要建立和執行遷移==建表
遷移由兩步完成 :
python manage.py makemigrations
python manage.py migrate
遷移前
遷移後
提示:默認採用sqlite3
數據庫來存儲數據
模型類和對象
完成數據庫表的增刪改查
.shell
, 進行簡單的增刪改查
API
操做.
ctrl+d
或輸入quit()
能夠退出shell
. python manage.py shell
測試增刪改查
API
操做
# 引入應用中的模型類 from Book.models import * # 建立書籍模型對象 book = BookInfo() # 新增記錄 book.name = 'xiyouji' # 保存記錄 book.save() # 查詢記錄 BookInfo.objects.all() # 刪除記錄 : 再查詢時,表裏數據爲空 book.delete() # 建立人物模型對象 people = PeopleInfo() people.name = 'sunwukong' people.gender = True people.book = book people.save() # 外鍵查詢 : 查詢書裏面保存的人物信息(peopleinfo_set是隱式生成的) book.peopleinfo_set.all() # 退出shell quit()