Django介紹&工程搭建

Django介紹

1. 簡介

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

Django的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼複用,多個組件能夠很方便的以"插件"形式服務於整個框架,Django有許多功能強大的第三方插件,你甚至能夠很方便的開發出本身的工具包。這使得Django具備很強的可擴展性。它還強調快速開發和DRY(DoNotRepeatYourself)原則。python

2. 特色

1) 重量級框架

對比Flask框架,Django原生提供了衆多的功能組件,讓開發更簡便快速。web

  • 提供項目工程管理的自動化腳本工具
  • 數據庫ORM支持(對象關係映射,英語:Object Relational Mapping)
  • 模板
  • 表單
  • Admin管理站點
  • 文件管理
  • 認證權限
  • session機制
  • 緩存

2)MVT模式

有一種程序設計模式叫MVC,其核心思想是分工、解耦,讓不一樣的代碼塊之間下降耦合,加強代碼的可擴展性和可移植性,實現向後兼容。shell

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。

注:差別就在於黑線黑箭頭標識出來的部分django

 

1.環境安裝

1.1 建立虛擬環境

mkvirtualenv django_py3_1.11 -p python3

注意須要聯網設計模式

1.2 安裝Django

使用django 1.11.11版本,注意須要聯網瀏覽器

pip install django==1.11.11

1.3 複習虛擬環境和pip的命令

# 虛擬環境
mkvirtualenv  # 建立虛擬環境
rmvirtualenv  # 刪除虛擬環境
workon  # 進入虛擬環境、查看全部虛擬環境
deactivate  # 退出虛擬環境

# pip
pip install  # 安裝依賴包
pip uninstall  # 卸載依賴包
pip list  # 查看已安裝的依賴包
pip freeze  # 凍結當前環境的依賴包

2.建立工程

在使用Flask框架時,項目工程目錄的組織與建立是須要咱們本身手動建立完成的。緩存

在django中,項目工程目錄能夠藉助django提供的命令幫助咱們建立。服務器

2.1 建立

建立工程的命令爲:

django-admin startproject 工程名稱

例如:想要在桌面的code目錄中建立一個名爲demo的項目工程,可執行以下命令:

cd ~/Desktop/code
django-admin startproject demo

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

2.2 工程目錄說明

查看建立的工程目錄,結構以下

  • 與項目同名的目錄,此處爲demo。
  • settings.py 是項目的總體配置文件。
  • urls.py 是項目的URL配置文件。
  • wsgi.py 是項目與WSGI兼容的Web服務器入口。
  • manage.py 是項目管理文件,經過它管理項目。

2.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中止服務器。

 

3.建立子應用

在Web應用中,一般有一些業務功能模塊是在不一樣的項目中均可以複用的,故在開發中一般將工程項目拆分爲不一樣的子功能模塊,各功能模塊間能夠保持相對的獨立,在其餘工程項目中須要用到某個特定功能模塊時,能夠將該模塊代碼總體複製過去,達到複用。

在Flask框架中也有相似子功能應用模塊的概念,即藍圖Blueprint。

Django的視圖編寫是放在子應用中的。

3.1 建立

在django中,建立子應用模塊目錄仍然能夠經過命令來操做,即:

python manage.py startapp 子應用名稱

manage.py 爲上述建立工程時自動生成的管理文件。

例如,在剛纔建立的demo工程中,想要建立一個用戶users子應用模塊,可執行:

cd ~/Desktop/code/demo
python manage.py startapp users

執行後,能夠看到工程目錄中多出了一個名爲users的子目錄。

3.2 子應用目錄說明

查看此時的工程目錄,結構以下:

  • admin.py 文件跟網站的後臺管理站點配置相關。
  • apps.py 文件用於配置當前子應用的相關信息。
  • migrations 目錄用於存放數據庫遷移歷史文件。
  • models.py 文件用戶保存數據庫模型類。
  • tests.py 文件用於開發測試用例,編寫單元測試。
  • views.py 文件用於編寫Web應用視圖。

3.3 註冊安裝子應用

建立出來的子應用目錄文件雖然被放到了工程項目目錄中,可是django工程並不能當即直接使用該子應用,須要註冊安裝後才能使用。

在工程配置文件settings.py中,INSTALLED_APPS項保存了工程中已經註冊安裝的子應用,初始工程中的INSTALLED_APPS以下:

註冊安裝一個子應用的方法,便是將子應用的配置信息文件apps.py中的Config類添加到INSTALLED_APPS列表中。

例如,將剛建立的users子應用添加到工程中,可在INSTALLED_APPS列表中添加'users.apps.UsersConfig'。

 

4.建立視圖

同Flask框架同樣,Django也用視圖來編寫Web應用的業務邏輯。

Django的視圖是定義在子應用的views.py中的。

4.1 建立

打開剛建立的users模塊,在views.py中編寫視圖代碼。

from django.http import HttpResponse def index(request): """ index視圖 :param request: 包含了請求信息的請求對象 :return: 響應對象 """ return HttpResponse("hello the world!") 

說明:

  • 視圖函數的第一個傳入參數必須定義,用於接收Django構造的包含了請求數據的HttpReqeust對象,一般名爲request。
  • 視圖函數的返回值必須爲一個響應對象,不能像Flask同樣直接返回一個字符串,能夠將要返回的字符串數據放到一個HTTPResponse對象中。

4.2 定義路由URL

1) 在子應用中新建一個urls.py文件用於保存該應用的路由。

2) 在users/urls.py文件中定義路由信息。

from django.conf.urls import url from . import views # urlpatterns是被django自動識別的路由列表變量 urlpatterns = [ # 每一個路由信息都須要使用url函數來構造 # url(路徑, 視圖) url(r'^index/$', views.index), ] 

3) 在工程總路由demo/urls.py中添加子應用的路由數據。

from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), # django默認包含的 # 添加 url(r'^users/', include('users.urls')), ] 
  • 使用include來將子應用users裏的所有路由包含進工程路由中;
  • r'^users/' 決定了users子應用的全部路由都已/users/開頭,如咱們剛定義的視圖index,其最終的完整訪問路徑爲/users/index/。

include函數除了能夠傳遞字符串以外,也能夠直接傳遞應用的urls模塊,如

from django.conf.urls import url, include from django.contrib import admin import users.urls # 先導入應用的urls模塊 urlpatterns = [ url(r'^admin/', admin.site.urls), # url(r'^users/', include('users.urls')), url(r'^users/', include(users.urls)), # 添加應用的路由 ] 

4) 啓動運行

從新啓動django程序

python manage.py runserver

在瀏覽器中輸入網址127.0.0.1:8000/users/index/ 可看到返回的信息

相關文章
相關標籤/搜索