まず、ミドルウェア
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( "...")
リターンの結果: