パイソン - ジャンゴ - ミドルウェアprocess_view

Process_viewの実行順序は、settings.pyを実行するためにもあります

urls.py process_view対応関係の後に、機能は、ビューの前に行わ

それはNoneを返した場合、ミドルウェア機能の裏に進んでprocess_view

HttpResponse戻り、その後のprocess_view機能が実行されていない場合、機能実行process_responseにスキップ

middleware_test.py:

インポートMiddlewareMixinのdjango.utils.deprecation 
django.shortcutsからはHttpResponseにインポートし


、クラスをテスト(MiddlewareMixin):
    DEF process一(セルフ、要求):
        印刷( "それはミドルウェアである- >テスト")

    DEFのprocess_response(セルフ、要求、応答):
        印刷( "これはのHttpResponseのテストである")
        を返すのHttpResponse() "これはテストリターンのHttpResponseである" 

    DEFのprocess_view(セルフ、リクエスト、view_func、view_argsと、view_kwargs):
        ' '' 
        :PARAM要求:ブラウザが送られましたリクエスト要求オブジェクト
        :PARAM view_func:実行するビューの関数名
        :PARAM view_argsと:実行するビュー機能の位置
        :PARAM view_kwargs:実行するキーワード表示機能
        :リターン:
        「」"
        印刷( "これはprocess_view機能のテストである") タイプ(view_func)のview_func、)印刷


クラスにTest2(MiddlewareMixin):
    DEF process一(セルフ、要求):
        印刷( "これはミドルウェアである- > TEST2")

    DEFのprocess_response (自己、要求、応答):
        印刷( "ここにTest2のはHttpResponse")
        はHttpResponseを返す( "これはのHttpResponseを返すにTest2である")

    DEFのprocess_view(SELFM、リクエスト、view_func、view_argsと、view_kwargs):
        印刷(「これはTest2をありますprocess_view機能「)
        を印刷(タイプのview_func、(view_func))

views.py:

django.shortcutsからのHttpResponseをインポート


DEF指数(要求):
    印刷(「これはインデックスページである」)
    はHttpResponseを返す(「ここのメインページインデックスがあります」)

訪問は、http://127.0.0.1:8000 /インデックス/

 

結果:

 

 

実装プロセス:

process一関数が最初に実行し、その後機能ビューを実行する前にprocess_view機能を実行し、ビュー機能を実行し、機能は最後process_responseを行います

 

process一にのみ実行された後、それが機能ビューを実行する前に、実行されるビュー機能を見つけ、最初の実行ミドルウェアprocess_view機能をルートと一致し、Noneを返します

ビュー機能process_viewを実行される機能の全てを実行した後、次の方法process_viewミドルウェアを続けると、リターンprocess_viewなした後であれば

返さprocess_viewのHttpResponseがある場合は、それに続くprocess_view機能を実行しない、それは最初process_response関数にジャンプし、そしてダウン続けます

例えば、中間の戻りのHttpResponse process_view 3は、もはや、その後の中間4,5,6ミドルウェア、ミドルウェアprocess_response直接ジャンプ機能6を実行せず、その後、中間体5,4,3を実行します2,1

 

process一関数のHttpResponseオブジェクトが返された場合、後続process一機能を実行しないprocess_view機能を行わない、対応する関数へのジャンプはprocess_response実行されます

おすすめ

転載: www.cnblogs.com/sch01ar/p/11516813.html
おすすめ