Django是一種基於Python的Web開發框架。html
那先來看下,什麼是Web開發python
Web開發指的是開發基於B/S(Brower/Server,瀏覽器/服務器)架構,經過先後端的配合,將後臺服務器的數據在瀏覽器上展示給前臺用戶的應用。好比將電子購物網站的商品數據在瀏覽器上展現給客戶,在基於瀏覽器的學校系統管理平臺上管理學生的數據,監控機房服務器的狀態並將結果以圖形化的形式展示出來等等。web
Web框架致力於解決一些共同的問題,爲Web應用提供通用的架構,讓用戶專一於網站應用業務邏輯的開發,而無須處理網絡應用底層的協議、線程、進程等方面的問題。這樣能大大提升開發者的效率和Web應用程序的質量。正則表達式
Django是一個由Python編寫的具備完整架站能力的開源Web框架。採用了MVT的軟件設計模式,即模型Model,視圖View和模板Template。使用Django,只要不多的代碼,Python的程序開發人員就能夠輕鬆地完成一個正式網站所須要的大部份內容,並進一步開發出全功能的Web服務。shell
Django框架的核心包括:一個 面向對象 的映射器,用做數據模型(以Python類的形式定義)和關係性數據庫間的介質;一個基於正則表達式的URL分發器;一個視圖系統,用於處理請求;以及一個模板系統。數據庫
核心框架中還包括:django
- 一個輕量級的、獨立的Web服務器,用於開發和測試。
- 一個表單序列化及驗證系統,用於HTML表單和適於數據庫存儲的數據之間的轉換。
- 一個緩存框架,並有幾種緩存方式可供選擇。
- 中間件支持,容許對請求處理的各個階段進行干涉。
- 內置的分發系統容許應用程序中的組件採用預約義的信號進行相互間的通訊。
- 一個序列化系統,可以生成或讀取採用XML或JSON表示的Django模型實例。
在目前基於Python語言的幾十個Web開發框架中,幾乎全部的全棧框架都強制或引導開發者使用MVC設計模式。所謂全棧框架,是指除了封裝網絡和線程操做,還提供HTTP、數據庫讀寫管理、HTML模板引擎等一系列功能的Web框架,好比Django、Tornado和Flask。後端
MVC把Web框架分爲3個基礎部分:設計模式
模型(Model):負責業務對象與數據庫的映射(ORM),這個模塊就是Web框架和數據庫的交互層。瀏覽器
視圖(View):負責數據的顯示和呈現,是對用戶的直接輸出。
控制器(Controller):負責從用戶端收集用戶的輸入,調用模型和視圖完成用戶的請求。
MTV和MVC本質上是同樣的,將視圖分紅View模塊和Template模塊兩部分,將動態的邏輯處理與靜態的頁面展示分離開。而Model採用了ORM技術。
模型(Model):和MVC中的定義同樣
視圖(View):負責業務邏輯,並在適當時候調用Model和Template。
模板(Template):負責如何把頁面展現給用戶(html)。
除了以上三層以外,還須要一個URL分發器,它的做用是將一個個URL的頁面請求分發給不一樣的View處理,View再調用相應的Model和Template。
通常是用戶經過瀏覽器向咱們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(若是不涉及到數據調用,那麼這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,而後逐級返回,視圖函數把返回的數據填充到模板中空格中,最後返回網頁給用戶。
pip install django
>>>import django >>>print(django.get_version()) 2.2 # 或者使用pip list命令,查看是否存在Django模塊
django-admin startproject mysite
這樣就會在當前目錄下建立一個叫作mysite的Django項目,目錄結構以下:
----mysite\ #目錄與Django無關,只是你項目的容器,能夠任意命名 |----manage.py #manage.py ----- Django項目裏面的工具,用於與Django進行不一樣方式的交互腳本,經過它能夠調用django shell和數據庫等。 |----mysite\ #內層的mysite/目錄是真正的項目文件包裹目錄,它的名字是你引用內部文件的包名,例如:mysite.urls。 | |----settings.py #settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其餘一些工做的變量。 | |----urls.py #urls.py ----- 路由文件,全部的任務都是從這裏開始分配,至關於Django驅動站點的內容表格。 | |----wsgi.py #一個基於WSGI的web服務器進入點,提供底層的網絡通訊功能,一般不用關心。 | |----__init__.py #一個定義包的空文件。
進入mysite項目根目錄,確保與manage.py
文件處於同一級,輸入下述命令:
python manage.py startapp polls
python manage.py runserver
打開瀏覽器,在地址欄輸入127.0.0.1:8000
,若是看到以下的界面,說明Django就啓動起來了!
Django提供了一個用於開發的web服務器,使你無需配置一個相似Ngnix的生產服務器,就能讓站點運行起來。這是一個由Python編寫的輕量級服務器,簡易而且不安全,所以不要將它用於生產環境。
進入mystie項目的根目錄,輸入下面的命令:
python manage.py runserver # Django的開發服務器(之後簡稱服務器)默認運行在內部的8000端口,若是你想指定端口,請在命令中顯示給出: python manage.py runserver 8080 # 若是想修改服務器的ip地址,請按下面的方式運行命令,好比: python manage.py runserver 0:8000 # 0是0.0.0.0的簡寫,Django將運行在0.0.0.0:8000上,整個局域網內都將能夠訪問站點,而不僅是是本機。
注意:Django的開發服務器具備自動重載功能,當你的代碼有修改,每隔一段時間服務器將自動更新。可是,有一些例如增長文件的動做,不會觸發服務器重載,這時就須要你本身手動重啓。
python manage.py shell
你能夠在這個 shell 裏面調用當前項目的 models.py 中的 API,對於操做數據,還有一些小測試很是方便。
# 記錄模型文件的修改(保存爲一個「遷移」) python manage.py makemigrations # 對數據庫執行真正的遷移動做 python manage.py migrate