Django學習筆記:第二章django的安裝和建立應用

2023-07-22 06:00:58

1.安裝Django

終端執行

pip install django

檢視django是否安裝成功

python -m django --version

1.1 安裝虛擬環境

在控制檯執行

pip install virtualenv

1.1.2 建立虛擬環境

在特定資料夾內開啟終端執行

virtualenv -p D:\program_condition\python\python.exe env_dj
virtualenv -p python直譯器所在位置 專案名稱

生成

1.2啟用和退出虛擬環境

進入上圖的Scripts資料夾內,開啟終端

activate  # 啟用

deactivate.bat # 退出

1.3 安裝和設定VSCode

  1. 先正常安裝VSCode

  2. 再安裝python外掛

  3. 安裝Django外掛,搜尋django,安裝前兩個

2.關於Django

特點

  • 功能完善,開發速度快,安全性強
  • 有完善的線上檔案
  • 模型自帶資料庫ORM元件
  • 可以使用正規表示式管理路由對映,方便靈活

2.1 MVC和MTV模式

目前主流的web框架,基本上使用MVC模式開發web應用,最大優勢在於可以降低系統各個模組間的耦合度。

2.1.1 MVC軟體架構模式

該模式將Web應用開發分為三個層次:

  • 模型(Model):負責處理各個功能的實現。
  • 檢視(View):負責頁面的顯示和使用者的互動。包含由HTML,CSS, JS組成的各種頁面。
  • 控制器(Controller):用於將使用者請求轉發給相應的模型進行處理,並根據模型的處理結果向用戶提供相應的響應。

具體應用的例子

Web應用程式:

  • M(Model):業務邏輯,例如資料庫互動和資料處理等。
  • V(View):使用者介面,例如HTML和CSS等。
  • C(Controller):處理使用者請求和控制使用者介面,例如處理HTTP請求和呼叫模型邏輯等。

桌面應用程式:

  • M(Model):文字編輯器的資料模型,例如儲存文字資料等。
  • V(View):使用者介面,例如文字編輯器的UI介面。
  • C(Controller):處理使用者輸入和狀態管理,例如處理使用者的滑鼠和鍵盤輸入、儲存檔案等。

2.1.2 MTV模式

Django對MVC模式進行修改,成為MTV模式。

  • M:模型,負責業務物件和資料庫的關係對映(ORM)
  • T:模板,負責頁面的顯示和使用者的互動
  • V:檢視,負責業務邏輯,並在適當的時候呼叫Model和Template

還包含了一個URL分發器,將一個個URL頁面請求分發給不同的View進行處理。view再呼叫相應的Model和Template。此時,URL分發器和View共同充當了控制器(Controller)。

在MTV模式下,urls.pyviews.py 對應控制器,models.py對應模型Model,檢視view對應templates下的所有檔案。

3.開發第一個Django應用

3.1 建立專案

在終端進入專案資料夾,啟用虛擬環境,執行

django-admin startproject mydjango  # mydjango為自定義名稱

生成mydjango專案,目錄:

mydjango  # 根目錄 可以任意命名
│ manage.py # 一個命令列使用程式,命令列方式與Django專案互動
└─mydjango # 專案目錄。這個名稱不能修改
        asgi.py # 與ASGI相容的Web伺服器,為專案提供服務的入口
        settings.py # 該專案的全域性組態檔
        urls.py # 該專案的路由組態檔
        wsgi.py # 相容WSGI的Web伺服器,為你的專案提供服務的入口
        __init__.py # 空檔案,告訴python該目錄應該被視為python包目錄

3.2 建立應用

cd進入根目錄,建立一個名為myapp 的應用,命令如下:

python manage.py startapp myapp  # myapp為應用名稱 可自定義

應用目錄結構:

myapp  # 應用目錄,不能修改名稱
│  admin.py # 後臺管理使用
│  apps.py # 應用管理檔案
│  models.py # 模型檔案
│  tests.py # 測試用例
│  views.py # 檢視檔案
│  __init__.py # 
│
└─migrations # 該目錄包含了資料遷移檔案,預設包含__init__.py
      __init__.py  # 一個空檔案,告訴python該目錄應該被視為python包目錄

建立應用後,需要在全域性組態檔中手動註冊:開啟 mydjango\settings.py 檔案,找到INSTALLED_APPS 節點,新增應用名稱

3.3 處理控制器

控制器主要有檢視檔案views.py和路由檔案urls.py組成

  • 檢視函數,實現模板與模板之間的互動
  • 處理請求主要也是由檢視函數完成
  • 先處理檢視的動態邏輯 myapp/views.py
from django.shortcuts import render # 該方法的作用是將指定的模板進行渲染,並將渲染結果返回給使用者端

# Create your views here.
from django.http import HttpResponse # 該類用於構造HTTP響應物件
from myapp import views  # 匯入檢視函數

def index(request): # 檢視函數index,該函數接收一個request物件作為引數,該物件包含了使用者端的請求資訊
	return render(request, '1/index.html') # 該行呼叫render方法,將index.html模板進行渲染,並將渲染結果返回給使用者端。在該方法中,第一個引數是request物件,第二個引數是要渲染的模板檔名

以上程式碼的作用是定義一個檢視函數,當用戶端存取該檢視的時候,該檢視將渲染index.html模板檔案,並將渲染結果返回給使用者端。

  • 處理URL請求路徑mydjango\urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('index/', views.index), 
]

第四行的作用:定義了一個urlpatterns列表,該列表儲存了所有的URL路由對映關係,path()方法用於定義一個路由對映規則,該方法接收兩個引數,第一個引數是路由路徑,第二個引數是檢視函數。該例子中,path('index/', views.index)表示當用戶存取localhost:8000/index/路徑時,該請求將被路由到views.py檔案中的index()函數進行處理。定義了一個URL路由,將localhost:8000/index/路徑對映到了views.py檔案中的index()函數進行處理。

3.4 處理模板

預設沒有模板目錄,需要手動建立,還需設定全域性組態檔。

3.4.1 建立模板目錄和模板檔案

在manage.py的同級目錄中建立templates目錄。

在templates目錄下建立一個 1 目錄,用來儲存本章的模板檔案;在1 目錄下新建一個index.html檔案,在檔案中新增

<div style = "color : red; font-size : 24px;">
	你好 Django!
</div>

建立好模板目錄後,還不能直接使用,需要在全域性檔案中對模板目錄進行註冊。

3.4.2 設定全域性設定檔案settings.py

開啟mydjango\setting.py 檔案,找到TEMPLATES 選項,修改程式碼

import os # 匯入模組
'DIRS': [os.path.join(BASE_DIR, 'templates')],

3.5 執行應用

在終端開啟應用根目錄,執行

python manage.py runserver

瀏覽器地址輸入:127.0.0.1:8000 即可存取

出現一個小插曲:輸入後初始頁面正常

但是存取index頁面無法存取,終端也沒報錯,停止執行後,才出現報錯提示

原來是url檔案中沒有匯入檢視函數

from myapp import views

成功!
組合鍵 Ctrl + C 退出