天天看點

一文搞懂Django入門學習

一、Django介紹

1. 簡介

Django,發音為[`dʒæŋɡəʊ],是用python語言寫的開源web開發架構,并遵循MVC設計。勞倫斯出版集團為了開發以新聞内容為主的網站,而開發出來了這個架構,于2005年7月在BSD許可證下釋出。這個名稱來源于比利時的爵士音樂家DjangoReinhardt,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。由于Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜志SDTimes評選為2013SDTimes100,位列"API、庫和架構"分類第6位,被認為是該領域的佼佼者。

一文搞懂Django入門學習

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模式說明

一文搞懂Django入門學習
  • M全拼為Model,主要封裝對資料庫層的通路,對資料庫中的資料進行增、删、改、查操作。
  • V全拼為View,用于封裝結果,生成頁面展示的html内容。
  • C全拼為Controller,用于接收請求,處理業務邏輯,與Model和View互動,傳回結果。

Django的MVT

一文搞懂Django入門學習
  • 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
一文搞懂Django入門學習

提示 :

  • 建立虛拟環境需要聯網
  • 建立成功後, 會自動工作在這個虛拟環境上
  • 工作在虛拟環境上, 提示符最前面會出現 “虛拟環境名稱”
  • 3.2檢視虛拟環境的指令 :
workon           
一文搞懂Django入門學習
  • 使用虛拟環境的指令 :
workon 虛拟環境名稱

例 :使用py3_django的虛拟環境
workon py3_django           
一文搞懂Django入門學習
  • 3.3退出虛拟環境的指令 :
deactivate           
一文搞懂Django入門學習
  • 3.4删除虛拟環境的指令 :
rmvirtualenv 虛拟環境名稱

例 :删除虛拟環境py3_django

先退出:deactivate
再删除:rmvirtualenv py3_django           
一文搞懂Django入門學習

4.如何在虛拟環境中安裝工具包?

文檔

  • python3版本下安裝django-2.2.5的包 :
pip install 包名稱

例 : 安裝django-2.2.5的包
pip install django==2.2.5           
一文搞懂Django入門學習
  • 檢視虛拟環境中安裝的包 :
pip list           
一文搞懂Django入門學習

三、建立Django項目

1.建立Django項目

在使用Flask架構時,項目工程目錄的組織與建立是需要我們自己手動建立完成的。

在django中,項目工程目錄可以借助django提供的指令幫助我們建立。

1. 建立

建立工程的指令為:

django-admin startproject 工程名稱           

例如:想要在桌面的code目錄中建立一個名為bookmanager的項目工程,可執行如下指令:

cd ~/Desktop/Code
django-admin startproject bookmanager           

執行後,會多出一個新目錄名為bookmanager,此即為新建立的工程目錄。

2. 工程目錄說明

檢視建立的工程目錄,結構如下

一文搞懂Django入門學習
  • 與項目同名的目錄,此處為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。

啟動後可見如下資訊:

一文搞懂Django入門學習

在浏覽器中輸入網址“127.0.0.1:8000”便可看到效果。

一文搞懂Django入門學習
  • 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. 子應用目錄說明

檢視此時的工程目錄,結構如下:

一文搞懂Django入門學習
  • admin.py檔案跟網站的背景管理站點配置相關。
  • apps.py檔案用于配置目前子應用的相關資訊。
  • migrations目錄用于存放資料庫遷移曆史檔案。
  • models.py檔案使用者儲存資料庫模型類。
  • tests.py檔案用于開發測試用例,編寫單元測試。
  • views.py檔案用于編寫Web應用視圖。

3. 注冊安裝子應用

建立出來的子應用目錄檔案雖然被放到了工程項目目錄中,但是django工程并不能立即直接使用該子應用,需要注冊安裝後才能使用。

在工程配置檔案settings.py中,INSTALLED_APPS項儲存了工程中已經注冊安裝的子應用,初始工程中的INSTALLED_APPS如下:

一文搞懂Django入門學習

注冊安裝一個子應用的方法,即是将子應用的配置資訊檔案apps.py中的Config類添加到INSTALLED_APPS清單中。

例如,将剛建立的book子應用添加到工程中,可在INSTALLED_APPS清單中添加'book.apps.BookConfig'。

一文搞懂Django入門學習

4. 設定PyCharm的環境

問題:

一文搞懂Django入門學習

首先找到pycharm的設定選項:

一文搞懂Django入門學習

選擇虛拟環境

一文搞懂Django入門學習

添加本地虛拟環境

一文搞懂Django入門學習

添加完成

一文搞懂Django入門學習

一路點幾個确定之後問題解決

一文搞懂Django入門學習