一、Django介紹
1. 簡介
Django,發音為[`dʒæŋɡəʊ],是用python語言寫的開源web開發架構,并遵循MVC設計。勞倫斯出版集團為了開發以新聞内容為主的網站,而開發出來了這個架構,于2005年7月在BSD許可證下釋出。這個名稱來源于比利時的爵士音樂家DjangoReinhardt,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。由于Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜志SDTimes評選為2013SDTimes100,位列"API、庫和架構"分類第6位,被認為是該領域的佼佼者。
Django的主要目的是簡便、快速的開發資料庫驅動的網站。它強調代碼複用,多個元件可以很友善的以"插件"形式服務于整個架構,Django有許多功能強大的第三方插件,你甚至可以很友善的開發出自己的工具包。這使得Django具有很強的可擴充性。它還強調快速開發和DRY(DoNotRepeatYourself)原則。
2. 特點
1) 重量級架構
對比Flask架構,Django原生提供了衆多的功能元件,讓開發更簡便快速。
- 提供項目工程管理的自動化腳本工具
- 資料庫ORM支援(對象關系映射,英語:Object Relational Mapping)
- 模闆
- 表單
- Admin管理站點
- 檔案管理
- 認證權限
- session機制
- 緩存
2)MVT模式
有一種程式設計模式叫MVC,其核心思想是分工、解耦,讓不同的代碼塊之間降低耦合,增強代碼的可擴充性和可移植性,實作向後相容。
MVC的全拼為Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程式語言Smalltalk發明的一種軟體設計模式,是為了将傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化使用者互動模型中而設計的。随着标準輸入輸出裝置的出現,開發人員隻需要将精力集中在業務邏輯的分析與實作上。後來被推薦為Oracle旗下Sun公司Java EE平台的設計模式,并且受到越來越多的使用ColdFusion和PHP的開發者的歡迎。現在雖然不再使用原來的分工方式,但是這種分工的思想被沿用下來,廣泛應用于軟體工程中,是一種典型并且應用廣泛的軟體架構模式。後來,MVC的思想被應用在了Web開發方面,被稱為Web MVC架構。
MVC模式說明
- M全拼為Model,主要封裝對資料庫層的通路,對資料庫中的資料進行增、删、改、查操作。
- V全拼為View,用于封裝結果,生成頁面展示的html内容。
- C全拼為Controller,用于接收請求,處理業務邏輯,與Model和View互動,傳回結果。
Django的MVT
- M全拼為Model,與MVC中的M功能相同,負責和資料庫互動,進行資料處理。
- V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,傳回應答。
- T全拼為Template,與MVC中的V功能相同,負責封裝構造要傳回的html。
注:差異就在于黑線黑箭頭辨別出來的部分
3. Django學習資料
- 官方網站
- Github源碼
- 英文文檔
- 中文文檔
二、虛拟環境
1.為什麼要搭建虛拟環境?
- 在開發過程中, 當需要使用python的某些工具包/架構時需要聯網安裝
- 比如聯網安裝Django架構django的2.2.5版本
sudo pip install django==2.2.5
- 提示:使用如上指令, 會将Django安裝到/usr/local/lib/python版本号/dist-packages路徑下
- 問題:如果在一台電腦上, 想開發多個不同的項目, 需要用到同一個包的不同版本, 如果使用上面的指令, 在同一個目錄下安裝或者更新, 新版本會覆寫以前的版本, 其它的項目就無法運作了.
- 解決方案:虛拟環境
- 作用:虛拟環境可以搭建獨立的python運作環境, 使得單個項目的運作環境與其它項目互不影響.
- 所有的虛拟環境都位于/home/下的隐藏目錄.virtualenvs下
2.如何搭建虛拟環境(了解--已經搭建好了)?
- 安裝虛拟環境的指令 :
sudo pip install virtualenv
sudo pip install virtualenvwrapper
安裝完虛拟環境後,如果提示找不到mkvirtualenv指令,須配置環境變量:
# 1、建立目錄用來存放虛拟環境
mkdir $HOME/.virtualenvs
# 2、打開~/.bashrc檔案,并添加如下:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
# 3、運作
source ~/.bashrc
3.如何使用虛拟環境?
- 3.1建立虛拟環境的指令 :
- 提示:如果不指定python版本,預設安裝的是python2的虛拟環境
- 在python2中,建立虛拟環境 mkvirtualenv 虛拟環境名稱 例 : mkvirtualenv py_django
- 在python3中,建立虛拟環境 mkvirtualenv -p python3 虛拟環境名稱 例 : mkvirtualenv -p python3 py3_django
提示 :
- 建立虛拟環境需要聯網
- 建立成功後, 會自動工作在這個虛拟環境上
- 工作在虛拟環境上, 提示符最前面會出現 “虛拟環境名稱”
- 3.2檢視虛拟環境的指令 :
workon
- 使用虛拟環境的指令 :
workon 虛拟環境名稱
例 :使用py3_django的虛拟環境
workon py3_django
- 3.3退出虛拟環境的指令 :
deactivate
- 3.4删除虛拟環境的指令 :
rmvirtualenv 虛拟環境名稱
例 :删除虛拟環境py3_django
先退出:deactivate
再删除:rmvirtualenv py3_django
4.如何在虛拟環境中安裝工具包?
文檔
- python3版本下安裝django-2.2.5的包 :
pip install 包名稱
例 : 安裝django-2.2.5的包
pip install django==2.2.5
- 檢視虛拟環境中安裝的包 :
pip list
三、建立Django項目
1.建立Django項目
在使用Flask架構時,項目工程目錄的組織與建立是需要我們自己手動建立完成的。
在django中,項目工程目錄可以借助django提供的指令幫助我們建立。
1. 建立
建立工程的指令為:
django-admin startproject 工程名稱
例如:想要在桌面的code目錄中建立一個名為bookmanager的項目工程,可執行如下指令:
cd ~/Desktop/Code
django-admin startproject bookmanager
執行後,會多出一個新目錄名為bookmanager,此即為新建立的工程目錄。
2. 工程目錄說明
檢視建立的工程目錄,結構如下
- 與項目同名的目錄,此處為bookmanager。
- settings.py是項目的整體配置檔案。
- urls.py是項目的URL配置檔案。
- wsgi.py是項目與WSGI相容的Web伺服器入口。
- manage.py是項目管理檔案,通過它管理項目。
3. 運作開發伺服器
在開發階段,為了能夠快速預覽到開發的效果,django提供了一個純python編寫的輕量級web伺服器,僅在開發階段使用。
運作伺服器指令如下:
python manage.py runserver ip:端口
或:
python manage.py runserver
可以不寫IP和端口,預設IP是127.0.0.1,預設端口為8000。
啟動後可見如下資訊:
在浏覽器中輸入網址“127.0.0.1:8000”便可看到效果。
- django預設工作在調式Debug模式下,如果增加、修改、删除檔案,伺服器會自動重新開機。
- 按ctrl+c停止伺服器。
2.建立子應用
在Web應用中,通常有一些業務功能子產品是在不同的項目中都可以複用的,故在開發中通常将工程項目拆分為不同的子功能子產品,各功能子產品間可以保持相對的獨立,在其他工程項目中需要用到某個特定功能子產品時,可以将該子產品代碼整體複制過去,達到複用。
在Flask架構中也有類似子功能應用子產品的概念,即藍圖Blueprint。
Django的視圖編寫是放在子應用中的。
1. 建立
在django中,建立子應用子產品目錄仍然可以通過指令來操作,即:
python manage.py startapp 子應用名稱
manage.py為上述建立工程時自動生成的管理檔案。
例如,在剛才建立的bookmanager工程中,想要建立一個使用者book子應用子產品,可執行:
cd ~/Desktop/code/book
python manage.py startapp book
執行後,可以看到工程目錄中多出了一個名為book的子目錄。
2. 子應用目錄說明
檢視此時的工程目錄,結構如下:
- admin.py檔案跟網站的背景管理站點配置相關。
- apps.py檔案用于配置目前子應用的相關資訊。
- migrations目錄用于存放資料庫遷移曆史檔案。
- models.py檔案使用者儲存資料庫模型類。
- tests.py檔案用于開發測試用例,編寫單元測試。
- views.py檔案用于編寫Web應用視圖。
3. 注冊安裝子應用
建立出來的子應用目錄檔案雖然被放到了工程項目目錄中,但是django工程并不能立即直接使用該子應用,需要注冊安裝後才能使用。
在工程配置檔案settings.py中,INSTALLED_APPS項儲存了工程中已經注冊安裝的子應用,初始工程中的INSTALLED_APPS如下:
注冊安裝一個子應用的方法,即是将子應用的配置資訊檔案apps.py中的Config類添加到INSTALLED_APPS清單中。
例如,将剛建立的book子應用添加到工程中,可在INSTALLED_APPS清單中添加'book.apps.BookConfig'。
4. 設定PyCharm的環境
問題:
首先找到pycharm的設定選項:
選擇虛拟環境
添加本地虛拟環境
添加完成
一路點幾個确定之後問題解決