1、Django簡介
Django是Python語言中的一個web框架,Python語言中主流的web框架有Django、Tornado、Flask 等多種。Django相較與其它WEB框架,其優勢為: 大而全,框架本身整合了ORM、模型繫結、模板引擎、快取、Session等功能,是一個全能型框架,擁有自己的Admin資料管理後臺,第三方工具齊全,效能折中。 缺點:功能太多,資料分表複雜,高效能擴充套件複雜。Django 是開源的!
2、安裝方式
pip install django
在官網:https://www.djangoproject.com/download/
python setup.py install
3、開發文件
官方文件的連結在:https://docs.djangoproject.com/en/2.2/ ,點選頁面右下角的 language 按鈕,可以選擇 zh-hans ,顯示中文,只有部分頁面有中文翻譯,點選頁面右下角的Documentation version,可以選擇版本。
5、相關術語和規範
-
B/S和C/S架構
Django是用於開發B/S架構的軟體的,軟體主要分為B/S架構和C/S架構:
-
B/S:全稱Browser/Server(瀏覽器/伺服器)
-
C/S:全稱Client/Server(客戶端/伺服器)
-
-
MVC
MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將業務邏輯聚集到一個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。
-
M: 管理應用程式的狀態(通常儲存到資料庫中),並約束改變狀態的行為(或者叫做“業務規則”)。
-
V: 負責把資料格式化後呈現給使用者。
-
C: 接受外部使用者的操作,根據操作訪問模型獲取資料,並呼叫“檢視”顯示這些資料。控制器是將“模型”和“檢視”隔離,併成為二者之間的聯絡紐帶。
-
-
MTV
Django也是一個MVC框架。但是在Django中,控制器接受使用者輸入的部分由框架自行處理,所以 Django 裡更關注的是模型(Model)、模板(Template)和檢視(Views),稱為 MTV模式:
-
M: 代表模型(Model),即資料存取層。 該層處理與資料相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及資料之間的關係等。一個抽象層,用來構建和操作你的web應用中的資料,模型是你的資料的唯一的、權威的資訊源。它包含你所儲存資料的必要欄位和行為。通常,每個模型對應資料庫中唯一的一張表。
-
T: 代表模板(Template),即表現層。 該層處理與表現相關的決定: 如何在頁面或其他型別文件中進行顯示。模板層提供了設計友好的語法來展示資訊給使用者。使用模板方法可以動態地生成HTML。模板包含所需HTML 輸出的靜態部分,以及一些特殊的語法,描述如何將動態內容插入。
-
V: 代表檢視(View),即業務邏輯層。 該層包含存取模型及調取恰當模板的相關邏輯。 你可以把它看作模型與模板之間的橋樑。用於封裝負責處理使用者請求及返回響應的邏輯。檢視可以看作是前端與資料庫的中間人,他會將前端想要的資料從資料庫中讀出來給前端。他也會將使用者要想儲存的資料寫到資料庫。
-
-
ORM
與Flask專案不同(SqlAlchemy),Django自帶ORM物件關係對映(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式技術,用於實現物件導向程式語言裡不同型別系統的資料之間的轉換。從效果上說,它其實是建立了一個可在程式語言裡使用的--“虛擬物件資料庫”。
ORM方法論基於三個核心原則:
-
簡單:以最基本的形式建模資料。
-
傳達性:資料庫結構被任何人都能理解的語言文件化。
-
精確性:基於資料模型建立正確標準化的結構。
ORM是隨著物件導向的軟體開發方法發展而產生的。用來把物件模型表示的物件對映到基於SQL 的關係模型資料庫結構中去。這樣,我們在具體的操作實體物件的時候,就不需要再去和複雜的 SQ L 語句打交道,只需簡單的操作實體物件的屬性和方法。ORM技術是在物件和關係之間提供了一條橋樑,前臺的物件型資料和資料庫中的關係型的資料通過這個橋樑來相互轉化。
-
6、專案的建立
-
cmd視窗中,切換到指定的專案資料夾,執行:
django-admin startproject my_project
其中 my_project 是你的專案名稱
這時會在指定的專案資料夾中,生成一個 mysite 資料夾,目錄結構如下:
my_project/ manage.py my_project/ __init__.py settings.py urls.py wsgi.py
這些目錄和檔案的說明如下:
-
最外層的my_project/ 根目錄是專案的名稱
-
manage.py 是管理 Django 專案的命令列工具
-
裡面一層的 my_project/ 目錄包含你的專案主應用,它是一個 Python 包
-
my_project__init__.py:一個空檔案,告訴 Python 這個目錄是一個 Python 包
-
my_project/settings.py:專案的配置檔案
-
my_project/urls.py:專案的 url路由配置
-
mysite/wsgi.py:用於你的專案的與WSGI相容的Web伺服器入口,用於專案部署
-
-
cmd視窗中,進入最外層的my_project
-
在這個目錄下,我們可以輸入如下命令,建立一個新的子應用:
django-admin startapp first_app
-
在該cmd目錄下執行如下命令,可以啟動專案:
python manage.py runserver
該命令後續可以增加引數,如:
python manage.py runserver 8000
python manage.py runserver 127.0.0.1:8000cmd視窗中會出現如下資訊:
F:\django_study\first_pro>python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. July 03, 2019 - 16:11:57 Django version 2.2.1, using settings 'first_pro.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. [03/Jul/2019 16:13:06] "GET / HTTP/1.1" 200 16348 [03/Jul/2019 16:13:06] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423 [03/Jul/2019 16:13:06] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 85876 [03/Jul/2019 16:13:06] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 85692 [03/Jul/2019 16:13:06] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 86184 Not Found: /favicon.ico [03/Jul/2019 16:13:06] "GET /favicon.ico HTTP/1.1" 404 1975
-
在瀏覽器中訪問http://127.0.0.1:8000/ ,會出現如下歡迎頁面:
-
第5步能夠開啟一個 django 的歡迎頁面,是因為第 4 步 中的命令,啟動了django自帶的一個簡易web伺服器,它是一個用純 Python 寫的輕量級的 Web 伺服器。僅僅用於開發環境,不要在生產環境使用。
在這個伺服器中,在需要的情況下會對每一次的訪問請求重新載入一遍 Python 程式碼。所以你不需要為了讓修改的程式碼生效而頻繁的重新啟動伺服器。然而,一些動作,比如新增新檔案,將不會觸發自動重新載入,這時你得自己手動重啟伺服器。
2、pycharm構建專案
-
pycharm 中 file >> new project >> django
PS:只有 pycharm professional版本才可以直接建立django專案
-
location 中,前面路徑,選擇你自己的專案路徑, untitled 專案名改為 firstdjangopycharm 變成如下:
D:\Flask工程\first_django_pycharm
3. project interpreter 點選 左邊的 三角形 ,選擇一個自己建立虛擬環境的直譯器 more settings, 點選 左邊的 三角形,設定 applications name,點選 create
4.檢視目錄結構如下:
其中first_app子應用下各檔案的說明如下:
-
-
migrations : 執行資料庫的遷移操作,就是把 models 中的 model 對映到資料庫
-
admin :admin管理介面檔案
-
apps: 本應用的相關配置檔案
-
models:資料庫的model檔案
-
tests:測試函式檔案
-
views:檢視檔案
-
5.啟動專案
-
執行根目錄下的manage.py, 第一次會執行失敗,因為沒有新增引數
-
在pycharm的右上角選擇 edit configurations
-
在 parameters 中寫入 runserver 0.0.0.0:8000
-
再次執行 manage.py,控制檯顯示資訊如下:
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. July 07, 2020 - 22:41:31 Django version 3.0.5, using settings 'django_study_01.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
5.在瀏覽器中訪問: http://127.0.0.1:8000 , 可以看到django的歡迎頁面
-
新增第一個頁面
-
修改first_app/views.py,增加如下程式碼:
from django.http import HttpResponse def index(request): # 所有的檢視函式都必須有引數request return HttpResponse("你好Django!")
-
這是 Django 中最簡單的檢視。定義了一個index()函式,第一個引數必須是 request,與網頁發來的請求有關,request 變數裡面包含get或post的內容,使用者瀏覽器,系統等資訊在裡面。
2. 在first_app目錄下新建 urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
3.修改 主應用下的urls.py(first_django_pycharm/urls.py)
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('first_app/', include('first_app.urls')), path('admin/', admin.site.urls), ]
4.重新啟動manage.py,瀏覽器中訪問:http://127.0.0.1:8000/first_app/,瀏覽器會顯示我們在 views 中返回的內容:
你好Django!