Djangoの学習:ミドルウェア

まず、ミドルウェア

1.ミドルウェアとは何ですか?

名前が暗示するミドルウェアは、入力の変化と出力ジャンゴグローバル処理要求と応答処理、比較的軽量の間に介在され、。変更はグローバルなので、パフォーマンスに影響します良いと、慎重かつ実用的であることが必要です。

2、何をしたか?
  ユーザーログイン
  ログイン
  crsfを:すべてのPOSTリクエストを検証するために行うために
  セッション
  権限の管理を

3、

注意:
  使用時ミドルウェアのためのすべての要求のバッチ処理を行う
  デコレータを使用する場合のみ、特定の処理機能を実行します

4の手順を使用して:

コードをコピー
ステップ:
1 ,, PYファイル書かれているフォルダ、構築するための 2を、その後、書き込みクラスを開始 1.ミドルウェアは、クラスAで、書くためのいくつかの方法があります クラスM1(MiddlewareMixinが):継承する必要があり 、自己(process一デフ要求):要求は:内部のすべてを要求する (「m1.request_request」)は、印刷 簡単に値を返さないこのメソッドは、もはやそこにバックアップしていきませんし、応答の独自のprocess_responseトップを実行している場合、戻り値は 、一般的です戻り値なし:その後のミドルウェアやビュー機能を実行し続ける DEF(セルフ、要求、応答)をprocess_response: レスポンスを返す 設定2.ミドルウェアプラスへのパス 、クラス名のフォルダ名の.pyファイル名を。 3.継承を見つけますそのクラスの、それはクラスを引き継いだ 、一般的に、あなたはそれがそのクラスが引き継ぐ継承入れ、導入の方法を使用するか、または時々 、このクラスの更新はありません。
コードをコピー

グラフィカルな分析プロセス:

process_requesは値を返します。

 

なし戻り値process_reques:

 

ミドルウェアの設定で:

 

 

例:

コードをコピー
class MiddlewareMixin(object):
    def __init__(self, get_response=None):
        self.get_response = get_response
        super(MiddlewareMixin, self).__init__()

    def __call__(self, request):
        response = None
        if hasattr(self, 'process_request'):
            response = self.process_request(request)
        if not response:
            response = self.get_response(request)
        if hasattr(self, 'process_response'):
            response = self.process_response(request, response)
        return response

# 至少要有两个类
class Md1(MiddlewareMixin):  #必须继承
    def process_request(self,request):
        print("md1===process_request")
        l = ["/login/"]
        #1 request.path_info:現在のパス
        ライン上のログインを直接、検証されていないので#またはnone:Lにrequest.path_info場合
            リターンなし
        request.session.getていない場合(settings.GDP):
            リターンリダイレクト(「/ログイン/ 「) 
        戻り値のない場合は#、およびミドルウェアビュー機能に従い続ける
        戻り値がある場合はそのprocess_responseの実装にとレスポンスの上に、#を
    DEFのprocess_response(セルフ、要求、応答):
        印刷(」MD1 === process_response1 = ")
        応答#を返すには、返すために持ってい

ます。class MD2(MiddlewareMixin)
    def process_request(self,request):
        print("md2====process_request2")
    def process_response(self,request,response):
        印刷( "MD2 ==== process_response2")
        の戻り応答
    
    
    
    
コードをコピー

テスト:

デフtestMD(リクエスト):
    プリント( "view.test")
    のリターンはHttpResponse( "...") 

リターンの結果:

おすすめ

転載: www.cnblogs.com/lida585/p/10990819.html