1.Django概述
Django是一個開放源代碼的Web應用框架,由python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。Django 框架的核心組件有:
- 用于創建模型的對象關系映射;
- 為最終用戶設計較好的管理界面;
- URL 設計;
- 設計者友好的模板語言;
- 緩存系統。
django已經成為web開發者的首選框架,是一個遵循 MVC 設計模式的框架。MVC是Model、View、Controller三個單詞的簡寫,分別代表模型、視圖、控制器。Django其實也是一個MTV 的設計模式。MTV是Model、Template、View三個單詞的簡寫,分別代表模型、模版、視圖 。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。它們各自的職責如下:
層次 | 職責 |
模型(Model),即數據存取層 | 處理與數據相關的所有事務:如何存取、如何驗證有效性、包含哪些行為以及數據之間的關系等。 |
模板(Template),即表現層 | 處理與表現相關的決定:如何在頁面或其他類型文檔中進行顯示。 |
視圖(View),即業務邏輯層 | 存取模型及調取恰當模板的相關邏輯。模型與模板的橋梁。 |
2.Django項目環境搭建
搭建Django開發環境,主要有以下六個步驟
2.1創建并激活虛擬環境
cd D:djangotest #自己創建空文件夾存放項目python -m venv djangoenv #創建虛擬環境
運行以下命令,激活虛擬環境
cd D:djangotestdjangoenvScriptsactivate #激活虛擬環境
2.2安裝django模塊
#1激活虛擬環境cd D:djangotestdjangoenvScriptsactivate#2安裝django模塊pip install Django #激活虛擬環境后安裝Django模塊
上述命令執行后,會把Django模塊,安裝到了djangoenv/Lib/site-packages 下,也就是說,此Django模塊僅僅在虛擬環境中,而不是安裝在Python全 局環境。目錄如下圖所示
2.3創建Django項目
安裝了Django之后,我們就可以使用Django的管理工具——>django-admin了我們創建一個名稱為loginweb的Django項目,命令如下:
#1激活虛擬環境cd D:djangotestdjangoenvScriptsactivate#2創建一個loginweb的項目django-admin startproject loginweb或者python -m django startproject loginweb
此命令執行后,會在djenv的同級目錄,創建一個名稱loginweb的Django 項目。目錄結構如下圖所示:
用Pycharm打開項目,項目結構文件含義如下:
- 外層的loginweb目錄:是項目的容器,Django不關心它的名字,我 們可以將它重命名為任何我們喜歡的名字
- 里面的loginweb目錄:它是一個純python包。我們可以稱呼它為項目的名稱,不能隨意重命名
- manage.py :它是Django的一個非常重要的工具,通過它可以調用 django shell和數據庫等,如:創建app應用程序、創建數據庫表、清 空數據、啟動項目等操作
- settings.py :Django 項目的配置文件。包含了項目的默認設置,包 括數據庫信息,調試標志以及其他一些工作的變量
- urls.py :Django 項目的URL路由聲明,負責把URL模式映射到應用 程序
- wsgi.py:Web服務器網關接口(Python Web Server Gateway Interface的縮寫),Python應用和Web服務器之間的一種接口,可以 看成是一種協議、規范。它是基于Http協議的,不支持WebSoket
- asgi.py:異步網關協議接口,能夠處理多種通用的協議類型,包括 HTTP,HTTP2和WebSocket,可以看成ASGI是WSGI的擴展
3.Django開發登錄功能
3.1創建app應用程序
一般一個項目包含多個app應用程序(當然,通用的app也可以在多個項目中使用) 下面我們為loginweb項目,創建login
#1激活虛擬環境cd D:djangotestdjangoenvScriptsactivate#2切到django項目中cd loginweb#3創建一個叫login的應用django-admin startapp login
上述命令執行后,目錄結構如下圖所示
3.2注冊app
app應用程序創建以后,必須把app注冊到Django,才能夠被Django項目所管理。我們只需要把login應用的名稱,配置到 loginweb/settings.py文件中即可。如下圖所示:
3.3Django視圖
Django視圖的作用:用于接受Web請求并且返回Web響應的簡單Python 函數。該函數一般定義在各自應用的views.py文件中。在視圖函數中,有 兩個重要的對象:請求對象和響應對象。下面是一個最簡單的視圖函數:
# 例:在login/views.py 中from django.http import HttpResponse# Create your views here.def login(request): return HttpResponse("登錄頁面")
其中:request參數為必填參數,代表用戶的請求,它是HttpRequest對象
3.4Django路由
Django的路由定義文件為:項目目錄urls.py文件。我們所有的路由配置,都以列表的方式,定義在urls.py文件中,添加我們想要的路由
# 例:在loginweb/urls.py 中from django.contrib import adminfrom django.urls import pathfrom login import viewsurlpatterns = [ path("admin/", admin.site.urls), path("login/",views.login)]
3.5啟動Django項目
在開發環境下,我們需要在本地啟動Django項目,來開發與調試我們的代 碼。啟動Django項目命令如下:
python manage.py runserver [port]#[port] 為應用訪問端口,可以缺省不寫,默認為8000。
此時,我們就可以用瀏覽器訪問我們的項目了。結果如下圖所示
訪問我們寫好的路由
3.6登錄功能改良
在login底下新寫建一個templates目錄,存放編寫的html前端頁面
login.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登錄頁面</title> <style> body{ text-align:center; } </style></head><body><form action="/login/" method="post"> {% csrf_token %} <h1 align="center">登錄頁面</h1> <p class="divs"> <label for="username">用戶名:</label> <input type="text" id="username" name="username" align="center"> </p> <p class="divs"> <label for="password">密碼:</label> <input type="password" id="password" name="password"> </p> <input type="submit" value="登錄"> <span style="color:red">{{ error }}</span></form></body></html>
index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>這里是主頁</title> <style> h1 { color:red } </style></head><body> <h1>這里是主頁</h1></body></html>
修改試圖函數
from django.shortcuts import render,redirect# Create your views here.def login(request): if request.method == 'POST': username = request.POST.get('username') passowrd = request.POST.get('password') if username=='songqin' and passowrd =='123456': return redirect('/index') else: return render(request,'login.html',{"error":"用戶名或密碼錯誤"}) return render(request,'login.html')def index(request): return render(request,'index.html')
修改loginweb/urls.py
from django.contrib import adminfrom django.urls import pathfrom login import viewsurlpatterns = [ path("admin/", admin.site.urls), path("login/",views.login), path("index/",views.index)]
再次啟動Django項目
python manage.py runserver [port]#[port] 為應用訪問端口,可以缺省不寫,默認為8000。
訪問http://127.0.0.1:8000/login/項目
輸入不是用戶名密碼不是songqin/123456
輸入songqin/123456點擊登錄 跳轉到主頁面
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。