Pythonの日65 Djangoフレームワーク、Djangoのライフサイクル、Djangoのミドルウェア、ミドルウェア実装プロセス、MVCパターンのDjangoのモデルとMTV

  ## Djangoのライフサイクル

 

 

  ##ジャンゴミドルウェア

でのDjangoのミドルウェア
ミドルウェアの設定項目ミドルウェアですオープンDjangoプロジェクトSettings.pyファイル、
ミドルウェア = [
     ' django.middleware.security.SecurityMiddleware ' ' django.contrib.sessions.middleware.SessionMiddleware ' " ジャンゴ。 middleware.common.CommonMiddleware ' ' django.middleware.csrf.CsrfViewMiddleware ' ' django.contrib.auth.middleware.AuthenticationMiddleware ' ' django.contrib.messages.middleware.MessageMiddleware ' 'django.middleware.clickjacking.XFrameOptionsMiddleware " 
] 


ミドルウェア構成アイテム、リストは、文字列のリスト(リストが注文され、後に単語を強調するために命じた理由を念頭に置いて、あなたが知っているだろうことを保つ)であるが、これら実際には、文字列は、メザニンあるクラスです。

  ##カスタムミドルウェア

1、ミドルウェアは、それぞれ、5つのメソッドを定義するメイン:( process一及びprocess_response)が 
1 、process一(セルフ、要求)
 2 、process_view(セルフ、要求、view_func、view_argsと、view_kwargs)
。3 、process_template_response(セルフ、リクエスト、レスポンス)
。4 、にprocess_exception(セルフ、要求、例外)
。5 、process_response(セルフ、リクエスト、レスポンス)を

なしていない場合に、HttpResponseオブジェクトのいずれであってもなくてもよい上記の方法の値を返すか、次に後方ジャンゴで定義されたルールに従って継続HttpResponseオブジェクトは、オブジェクトがユーザーに直接返送された場合、続けています。


2、process一方法
つのパラメータ、要求を有するprocess一、要求及びビュー機能は、(前、後のDjangoをルーティングするために、一連の動作でこのリクエストオブジェクト)リクエストと同じです。

リクエストオブジェクトは同じであるので、我々は要求を含む、一連の操作を要求するためにターゲットにすることができます。変数名をので =我々は、その後のビューにおけるミドルウェア機能の値に設定され、変数値は、そのような操作は、我々は、同じ方法を得ることができます。

その戻り値はなしのHttpResponseオブジェクトになることはできませんすることができます。戻り値は、それがのHttpResponseオブジェクトである場合、次のミドルウェア処理に行き続けるためになし、その後、通常のプロセスではありません、Djangoのビュー関数は実行されませんし、対応するオブジェクトがブラウザに返されます。

3、process_response方法
process_response法複数ミドルウェアは、実行の逆順ミドルウェアに応じて登録され、それは第一のミドルウェアprocess一方法は、最初に実行され、その最後の実行方法process_response最後ミドルウェア前回の実行の方法をprocess一、そのprocess_responseメソッドが最初に実行されます。

4、process_view方法。
process_view(自己、要求、view_func、 view_argsと、view_kwargs) 

四つのパラメータを有している

 - 要求であるのHttpRequestオブジェクト。
- view_funcビュー機能は、Djangoは使用しようとしています。(という名の文字列の関数としてよりも、実際にオブジェクトの関数である。)
- view_argsと位置パラメータリストがビューに渡される。
 - view_kwargsキーワード辞書には、ビューにパラメータを渡すことです。view_argsととview_kwargsは、最初のビューパラメータ(リクエスト)が含まれていません。

Djangoは関数を呼び出す前に、ビューprocess_viewメソッドを呼び出します。

それはNoneまたはHttpResponseオブジェクトを返さねばなりません。それがNoneを返した場合、Djangoはミドルウェアprocess_viewは、任意の他の方法を実行し、要求を処理し続け、その後、対応するビューを実行します。それはHttpResponseオブジェクトを返した場合、Djangoはビューの機能を実行しませんが、ミドルウェアに直接Uターン、フラッシュバックは、1つのprocess_responseの方法を実行し、最後にブラウザに返さ

  ##ミドルウェア実装プロセス

リクエストがミドルウェアに到着後、各登録された正のシーケンスに従って第一中間process一メソッドの実装は、process一方法は、返される値は、オブジェクト、後者の方法が実行されないprocess一のHttpResponseある場合、それは順次行われ、なしの値を返すが、現在の方法のprocess_response実行はミドルウェアが(すべてではないprocess_response方法がUターンを実行することに留意されたい)、HttpResponseオブジェクトがブラウザに返さ相当します。換言すれば、ミドルウェアは6つのミドルウェア、実装プロセスを登録した場合、最初の三つのミドルウェアはHttpResponseオブジェクト、4,5,6ミドルウェアprocess一及びprocess_response方法が実​​装されていない、3の順序の実装を返します、process_response方法2,1ミドルウェア。

 

 

process一方法はprocess_view方法が実行ビューの後、注文と実行のすべてprocess_view方法を継続、Noneを返し、process_view方法ミドルウェアを実行し、ビュー機能は、最初のビューが実行されていない機能を実行する見つけ、一致するルートを実行しています機能。中間体3 process_view方法はのHttpResponseオブジェクト、及び4,5,6 process_view機能のビューを返した場合、最後の中間体から、実行されない、中間process_response方法6は、直接実行を開始する逆です。

   ## Djangoのフローチャート要求

  

 

  ##Django中MTV模式 和 MVC模式

MVC:
    
    项目目录结构的设计模式
    
    
    客户       ------点餐-------->    服务员  ------处理菜单需求--------> 厨师
               <------------------            <-------------------------        
    
    (浏览器)  ------------------->  函数或者类处理  ------------------>  数据库
                                       业务逻辑
    views:                         controllers                          models:
                                        loginController.py                    LoginModel.py
                                        UserController.py                   UserModel.py
        大量html页面                         
        
    
MVC
    
    django:
        M : models 
        T : Templates (各种html页面) 相当于views
        V :Views(视图处理函数) 相当于 controllers
    

 

おすすめ

転載: www.cnblogs.com/liangzhenghong/p/11210355.html