91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django框架中間件定義與使用方法案例分析

發布時間:2020-09-27 20:27:31 來源:腳本之家 閱讀:141 作者:ITxiaoke 欄目:開發技術

本文實例講述了Django框架中間件定義與使用方法。分享給大家供大家參考,具體如下:

1. 定義

Django中的中間件是一個輕量級、底層的插件系統,可以介入Django的請求和響應處理過程,修改Django的輸入或輸出。中間件的設計為開發者提供了一種無侵入式的開發方式,增強了Django框架的健壯性,其它的MVC框架也有這個功能,名稱為IoC。

2. 各個方法

Django在中間件中預置了五個方法,這五個方法的區別在于不同的階段執行,對輸入或輸出進行干預,方法如下:

1)初始化:無需任何參數, 服務器接收第一個請求時會被調用一次,而且只調用一次,用于確定是否啟用當前中間件。

def init(): 
pass

2)在進行url匹配之前被調用,在每個請求上調用,返回None或HttpResponse對象。

def process_request(request): 
pass

3)在url匹配之后,視圖函數調用之前被調用,在每個請求上調用,返回None或HttpResponse對象。

def process_view(request, view_func, view_args, view_kwargs): 
pass

4) 視圖函數之后會被調用:所有響應返回瀏覽器之前被調用,在每個請求上調用,返回HttpResponse對象。

def process_response(request, response): 
pass

5)異常處理:當視圖函數拋出異常時調用,在每個請求上調用,返回一個HttpResponse對象。

def process_exception(request,exception): 
pass

3. 案例加以說明

1)在booktest/目錄下創建middleware.py文件,代碼如下:

from django.http import HttpResponse
from django.conf import settings
class MyMiddleWare(object):
  def __init__(self):
    print("init")
  def process_request(self,request):
    print("prcess_request")
  def process_view(self,request,view_func,*view_args,**view_kwargs):
    print("process_view")
  def process_response(self,request,response):
    print("process_response")
    return response
  def process_exception(self,request,exception):
    print("exception")

2)在test05/settings.py文件中,向MIDDLEWARE_CLASSES項中注冊。

MIDDLEWARE_CLASSES = (
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'django.middleware.security.SecurityMiddleware',
  'booktest.middleware.MyMiddleWare',
)

3)修改booktest/views.py中視圖index。

# 首頁的視圖函數
def index(request):
  print("index")
  return render(request,'booktest/index.html')

4)運行服務器,命令行中效果如下圖:

Django框架中間件定義與使用方法案例分析

5)刷新頁面,命令行中效果如下圖:

Django框架中間件定義與使用方法案例分析

6)異常中間件效果:

+如果多個中間件中注冊了相同的方法,則先注冊的后執行。

修改視圖函數如下:

# 首頁的視圖函數
def index(request):
  print("index")
  raise Exception("value error")
  return render(request,'booktest/index.html')

效果圖如下:

Django框架中間件定義與使用方法案例分析

4. Github代碼地址:

https://github.com/ITXIAOKE/PythonMiddlewareDemo

希望本文所述對大家基于Django框架的Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沾化县| 萨嘎县| 荣成市| 淄博市| 白银市| 上林县| 平遥县| 丽江市| 栾川县| 集安市| 晴隆县| 金坛市| 雷州市| 玉田县| 长汀县| 蒙自县| 石泉县| 霍州市| 临沭县| 彭州市| 巫山县| 长寿区| 和平县| 宣威市| 德格县| 淮阳县| 清丰县| 磐安县| 黄浦区| 前郭尔| 武定县| 柘荣县| 吴忠市| 广州市| 汪清县| 清涧县| 文登市| 乐都县| 新泰市| 策勒县| 穆棱市|