Django使用基礎

Django基礎和MVT架構

  • Django的主要目的是簡便、快速的開發數據庫驅動的網站;強調代碼複用,多個組件可以很方便的以”插件”形式服務於整個框架;遵循MVC設計模式,但有一個專有名詞:MVT
MVC
- MVC 全拼 Model-View-Controller
- MVC核心思想:解耦
        - 讓不同的模塊之間降低耦合,增加代碼的可擴展性和可移植性,實現更好的向後續版本的兼容
        - 開發原則:高內聚,低耦合
- MVC解析
        - M 全拼爲Model, 主要封裝對數據庫層的訪問,內嵌ORM框架,實現面向對象的編程來操作數據庫(與數據庫交互)
        - V 全拼爲View, 用於封裝結構,內嵌模板引擎,實現動態發展數據(處理html頁面)
        - C 全拼爲Controller, 用於接收GETPOST請求,處理業務邏輯,與ModeView交互,返回結果
MVT
  • 重點就是研究 Model-View-Template三個模塊間如何協同工作及各自模塊的代碼如何編寫
- MVT全拼 Model-View-Template
- MVT核心思想:解耦
- MVT 解析
        - M(模型)全拼爲Model,與MVC中的M功能相同,負責數據處理,內嵌ORM框架
        - V(試圖)全拼爲View,與MVC中的C功能相同,接收HttpRequest,業務處理,返回HttpResponse
        - T(模板)全拼爲Template,與MVCV功能相同,負責封裝結構要返回的html,內嵌了模板引擎
設計模式
- 設計模式:是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結
- 使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性
- 設計模式使代碼編寫真正工程化
- 設計模式是軟件工程的基石脈絡,如同大廈的結構一樣
高聚合,低耦合
耦合性:指軟件系統結構中各模塊間相互聯繫緊密程度的一種度量。
    - 模塊之間聯繫越緊密,其耦合性就越強,模塊的獨立性則越差
    - 摸塊間耦合高低取決於模塊間接口的複雜性、調用的方式及傳遞的信息
內聚性:指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量
    - 若一個模塊內各元素(語名之間、程序段之間)聯繫的越緊密,則它的內聚性就越高
搭建虛擬機環境
# 如果在一臺電腦上, 想開發多個不同的項目, 需要用到同一個包的不同版本, 如果使用上面的命令, 在同一個目錄下安裝或者更新, 新版本會覆蓋以前的版本, 其它的項目就無法運行了.
# 解決方案:虛擬機環境
    - 作用:虛擬環境可以搭建獨立的python運行環境, 使得單個項目的運行環境與其它項目互不影響
    - 所有的虛擬環境都位於/home/下的隱藏目錄.virtualenvs下
如何搭建虛擬環境
# 安裝虛擬環境的命令
sudo pip install virtualenv
sudo pip install virtualenvwrapper
# 創建虛擬環境的命令
# 提示:如果不指定python版本,默認安裝的是python2的虛擬環境
- 在python2中創建虛擬環境
mkvirtualenv 虛擬環境名稱
- 在python3中創建虛擬環境
mkvirtualenv -p python3 虛擬環境名稱
# 提示
- 創建虛擬環境需要聯網
- 創建成功後, 會自動工作在這個虛擬環境上
- 工作在虛擬環境上, 提示符最前面會出現 “虛擬環境名稱”
如何使用虛擬環境
# 查看虛擬環境的命令
workon 兩次tab鍵
# 使用虛擬環境的命令
  workon 虛擬環境名稱
# 退出虛擬環境的命令
 deactivate
# 刪除虛擬環境的命令
rmvirtualenv 虛擬環境名稱
  先退出:deactivate
  再刪除:rmvirtualenv py3_django
如何在虛擬環境中安裝工具包
# 提示 : 工具包安裝的位置 
python2版本下:
~/.virtualenvs/py_django/lib/python2.7/site-packages/
python3版本下:
~/.virtualenvs/py3_django/lib/python3.5/site-packages
# 查看虛擬環境中安裝的包
pip freeze
創建Django項目
  • 項目的組織結構爲 : 一個項目包含多個應用, 一個應用對應一個業務模塊.
  • 在當前用戶的某個目錄下創建項目, 這樣不會發生權限問題.
# 創建項目

## 創建項目的命令
django-admin startproject 項目名稱(BookManager)
## 項目結構
BookManager : 是與項目同名的文件, 內部包含如下項目的配置文件.
- init.py : 是表示文件BookManager可以被當作包使用
- settings.py : 是項目的整體配置文件
- urls.py : 是項目的URL配置文件
- wsgi.py : 是項目與WSGI兼容的Web服務器入口
manage.py : 是項目運行的入口, 指定配置文件路徑.
# 創建應用
cd BookManager/
python manage.py startapp Book
## 項目結構
admin.py : 是後臺的站點管理註冊文件.
init.py : 是表示文件Book可以被當作包使用
migrations : 是做模型遷移的.
models.py : 是處理數據的.MVT中的M
tests.py : 是做單元測試用的.
views.py : 是處理業務邏輯的.MVT中的V
## 測試服務器
### 在開發階段, 爲了能夠快速預覽到開發的效果, Django提供了一個純Python編寫的輕量級web服務器
- 僅在開發階段使用,非正式服務器
### 運行測試服務器的命令
python manage.py runserver ip:端口
例:
python manage.py runserver
模型
# 數據庫開發的提示
 MVT 設計模式中的Model, 專門負責和數據庫交互.對應(models.py)
由於Model中內嵌了ORM框架, 所以不需要直接面向數據庫編程
而是定義模型類, 通過模型類和對象完成數據庫表的增刪改查
ORM框架就是把數據庫表的行與相應的對象建立關聯, 互相轉換.使得數據庫的操作面向對象
# 使用Django進行數據庫開發的步驟
1.定義模型類
class BookInfo(models.Model):
2.模型遷移
1).生成遷移文件:根據模型類生成創建表的語句
python manage.py makemigrations
2).執行遷移:根據第一步生成的語句在數據中創建表
python manage.py migrate
3.操作數據庫
# 通過模型類和對象完成數據庫表的增刪改
python manage.py shell
站點管理
# 站點:分爲內容發佈和公共訪問
# 內容發佈的部分由網站的管理員負責查看、添加、修改、刪除數據
# Django能夠根據定義的模型類自動地生成管理模塊
    - 1.管理界面本地化
    - 2.創建管理員
    - 3.註冊模型類
    - 4.發佈內容到數據庫
    - 5.自定義管理頁面
# 管理界面本地化
1.語言
LANGUAGE_COOE="zh-Hans"
2.時區
TIME_ZONE="Asia/Shanghai"
# 創建管理員
1.python manage.py createsuperuser
2.用戶名
3.密碼
視圖和URL
# 定義試圖
* 視圖就是一個Python函數,被定義在應用的views.py中
* 視圖的第一個參數是HttpRequest類型的對象reqeust,包含了所有請求信息
* 視圖必須返回HttpResponse對象,包含返回給請求者的響應信息
# 配置URLconf
## 在包含的項目的URLconf中配置
        #正則爲:只要不是"admin/"就算匹配成功
        url(r'^', include('Book.urls')),
## 在包含的應用的URLconf中配置
        url(r'^booklist/$', bookList)
模板
# 模板使用步驟
1.創建模板
    - 在應用同級目錄下創建模板文件夾templates. 文件夾名稱固定寫法
    - 在templates文件夾下, 創建應用同名文件夾
    - 在應用同名文件夾下創建網頁模板文件
2.設置模板查找路徑
    - 在settings.py 文件下
        # 設置模板查找路徑
        "DIRS":[os.path.join(BASE_DIR, "templates")]
3.模板接收視圖傳入的數據
#準備上下文:定義在字典中(測試數據)
context = {"title":"測試模板處理數據"}
# 將上下文交給模板中進行處理,處理後視圖響應給客戶端
return render(request, "Book/index.html", context)
4.模板處理數據
<li>{{title(context的key)}}</li>

實例創建流程

# 流程
1. 客戶端發送請求
2. 服務器接收請求,路徑通過settings.py中路徑入口找到項目中的urls.py(url(r'^', include("Book.urls"))),
3.再找到應用中的urls.py(url(r'^booklist/$', bookList)),匹配出調用那個視圖
4. 調用視圖views.py,根據業務需求,查詢數據庫找到models.py(視圖對象.objects.all()或get()), 數據庫返回一個列表給視圖
5.視圖再找到渲染模板templates,將數據封裝爲一個.html文件,再返回給視圖
6.視圖把這個.html文件返回給客戶端

## 安裝虛擬環境的命令
sudo pip install virtualenv
sudo pip install virtualenvwrapper
# 在python3中創建虛擬環境
mkvirtualenv -p python3 虛擬環境名稱
# 使用虛擬環境命令
workon 虛擬環境名稱
# 退出虛擬環境命令
deactivate
# 刪除虛擬環境命令
rmvirtualenv 虛擬環境名稱
# 安裝命令包
pip install 包名稱(例django==1.8.2# 創建項目
django-admin startproject 項目名稱
# 創建應用
cd BookManager/
python manage.py startapp 應用名稱

# 修改解釋器路徑
/home/python/.virtualenvs/py3_django/bin/python

# 運行服務器
python manage.py runserver

# 模型遷移
## 生成遷移文件
python manage.py makemigrations
## 執行遷移
python manage.py migrate

# 管理界面本地化
## 簡體中文
LANGUAGE_COOE="zh-Hans"
## 時區:亞洲/上海時區
TIME_ZONE="Asia/Shanghai"

# 創建管理員
python manage.py createsuperuser

# 設置模板查找路徑
"DIRS":[os.path.join(BASE_DIR, "templates")]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章