Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVT的軟件設計模式,即模型Model,視圖View和模板Template。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容爲主的網站的。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。php
Django的主要目標是使得開發複雜的、數據庫驅動的網站變得簡單。Django注重組件的重用性和「可插拔性」,敏捷開發和DRY法則(Don't Repeat Yourself)。在Django中Python被廣泛使用,甚至包括配置文件和數據模型。html
Django框架的核心包括:一個 面向對象 的映射器,用做數據模型(以Python類的形式定義)和關係性數據庫間的介質;一個基於正則表達式的URL分發器;一個視圖系統,用於處理請求;以及一個模板系統。python
核心框架中還包括:web
Web服務器開發領域裏著名的MVC模式,所謂MVC就是把Web應用分爲模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、鬆耦合的方式鏈接在一塊兒,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求,其示意圖以下所示:正則表達式
Django的MTV模式本質上和MVC是同樣的,也是爲了各組件間保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別是值:shell
通常是用戶經過瀏覽器向咱們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(若是不涉及到數據調用,那麼這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,而後逐級返回,視圖函數把返回的數據填充到模板中空格中,最後返回網頁給用戶。數據庫
pip install django
django-admin startproject mysite
當前目錄下會生成mysite的工程,目錄結構以下:django
----mysite\ #目錄與Django無關,只是你項目的容器,能夠任意命名 |----manage.py #manage.py ----- Django項目裏面的工具,經過它能夠調用django shell和數據庫等。 |----mysite\ #內層的目錄是真正的項目文件包裹目錄,它的名字是你引用內部文件的包名,例如:。 | |----settings.py #settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其餘一些工做的變量。 | |----urls.py #urls.py ----- 負責把URL模式映射到應用程序。 | |----wsgi.py #一個基於WSGI的web服務器進入點,提供底層的網絡通訊功能,一般不用關心。 | |----__init__.py #一個定義包的空文件。mysite/mysite.urls
python manage.py runserver 8080
這樣咱們的django就啓動起來了!當咱們訪問:http://127.0.0.1:8080/設計模式
建立數據庫表 或 更改數據庫表或字段瀏覽器
1 # 1. 建立更改的文件 2 python manage.py makemigrations 3 # 2. 將生成的py文件應用到數據庫 4 python manage.py migrate
這種方法能夠在SQL等數據庫中建立與models.py代碼對應的表,不須要本身手動執行SQL。
使用開發服務器
開發服務器,即開發時使用,通常修改代碼後會自動重啓,方便調試和開發,可是因爲性能問題,建議只用來測試,不要用在生產環境。
python manage.py runserver # 當提示端口被佔用的時候,能夠用其它端口: python manage.py runserver 8001 python manage.py runserver 9999 (固然也能夠kill掉佔用端口的進程,具體後面有講,此處想知道的同窗可查下 lsof 命令用法) # 監聽機器全部可用 ip (電腦可能有多個內網ip或多個外網ip) python manage.py runserver 0.0.0.0:8000 # 若是是外網或者局域網電腦上能夠用其它電腦查看開發服務器 # 訪問對應的 ip加端口,好比 http://172.16.20.2:8000
Django 項目環境終端
python manage.py shell
這個命令和 直接運行 python 或 bpython 進入 shell 的區別是:你能夠在這個 shell 裏面調用當前項目的 models.py 中的 API,對於操做數據,還有一些小測試很是方便。若是你安裝了 bpython 或 ipython 會自動用它們的界面,推薦安裝 bpython。