Django Web框架筆記day06

2021-09-26 08:47:53 字數 3462 閱讀 4201

中介軟體 middleware

實現方式

django啟用session

session的基本操作:

儲存 session 的值到伺服器

獲取session的值

在 settings.py 中有關 session 的設定

session_cookie_age

session_expire_at_browser_close = true

設定只要瀏覽器關閉時,session就失效(預設為false)

session 預設配置

注: 當使用session時需要遷移資料庫,否則會出現錯誤

$ python3 manage.py makemigrations

$ python3 manage.py migrate

要求 :

建立乙個 user 應用 實現使用者登陸,註冊,退出登陸的邏輯

建立乙個 index 應用 實現使用者主頁

模型類使用者模型類

class

user

(models.model)

: username = models.charfield(

"使用者名稱"

, max_length=

30, unique=

true

) password = models.charfield(

"密碼"

, max_length=30)

def__str__

(self)

:return

"使用者"

+ self.username

登陸設計規範(在user應用中寫**)

路由正則

檢視函式

模板位置

說明/user/login

def login_view(request):

templates/user/login.html

使用者登陸

/user/logout

def logout_view(request

無退出使用者登陸

主頁設計規範(在index應用中寫**)

路由正則

檢視函式

模板位置說明/

def index_view(request):

templates/index/index.html

主頁介面參考:

註冊介面

主頁

登陸後

編寫中介軟體類:

("中介軟體方法 process_request 被呼叫"

)def

process_view

(self, request, callback, callback_args, callback_kwargs)

:print

("中介軟體方法 process_view 被呼叫"

)def

process_response

(self, request, response)

:print

("中介軟體方法 process_response 被呼叫"

)return response

defprocess_exception

(self, request, exception)

:print

("中介軟體方法 process_exception 被呼叫"

)def

process_template_response

(self, request, response)

:print

("中介軟體方法 process_template_response 被呼叫"

)return response

# file : settings.py

middleware =[.

..'middleware.mymiddleware.mymiddleware'

,]

練習

答案:

from django.http import httpresponse, http404

from django.utils.deprecation import middlewaremixin

import re

class

visitlimit

(middlewaremixin)

:'''此中介軟體限制乙個ip位址對應的訪問/user/login 的次數不能改過10次,超過後禁止使用'''

visit_times =

# 此字典用於記錄客戶端ip位址有訪問次數

defprocess_request

(self, request)

: ip_address = request.meta[

'remote_addr'

]# 得到ip位址

ifnot re.match(

'^/test'

, request.path_info)

:return

times = self.visit_times.get(ip_address,0)

print

("ip:"

, ip_address,

'已經訪問過'

, times,

'次!:'

'你已經訪問過'

+str

(times)

+'次,您被禁止了'

)

csrf

cross-site request forgey

跨 站點 請求 偽裝

說明:

作用:

解決方案:

取消 csrf 驗證(不推薦)

通過驗證 csrf_token 驗證

需要在表單中增加乙個標籤 

Django web框架目錄

編輯本目錄 01 http協議 編輯02 web應用程式 編輯03 http請求協議與響應協議 編輯04 diyweb框架 編輯05 django簡介與安裝 編輯06 django簡單示例 編輯07 靜態檔案配置 編輯08 url之路由控制 編輯09 檢視層 編輯10 模板層 編輯11 orm簡介 ...

Django Web框架筆記day02

django的框架模式 模板 templates劍指offer 模板的繼承 url 反向解析 if request.method post 處理post請求的資料並響應 else 處理非post 請求的響應 使用post方式接收客戶端資料 方法request.post 引數名 request.pos...

django web開發框架簡介 01

核心思想 高可擴充套件性 向後相容 低耦合,高內聚 pip freeze可匯出安裝包 虛擬環境安裝 sudo apt install python virtualenv建立虛擬環境 virtualenv 虛擬環境名稱 linux上通過virtualenv部署虛擬環境 linux下的虛擬環境使用 pi...