Djangoでカスタムミドルウェアを設定する方法

投げ:

オプションで、条件を満たすすべてのビューにクワーグを渡すミドルウェアを作成しようとしています。

問題は、ミドルウェアのセットアップ方法の例が見つからないことです。私がしたいメソッドをオーバーライドするクラスを見てきましたprocess_view

Class CheckConditionMiddleware(object):  
    def process_view(self, request):  

        return None  

しかし、このクラスはどこに置くのですか?ミドルウェアアプリを作成し、このクラスをその中に配置してから参照できsettings.middlewareますか?

AlvaroAV:

最初:パスの構造

それがない場合は、次の構造に従ってアプリ内にミドルウェアフォルダーを作成する必要があります。

yourproject/yourapp/middleware

ミドルウェアフォルダーは、settings.py、urls、templatesと同じフォルダーに配置する必要があります。

重要:ミドルウェアフォルダー内に__init__.py空のファイルを作成して、アプリがこのフォルダーを認識できるようにしてください

2番目:ミドルウェアを作成する

次に、カスタムミドルウェアのファイルを作成する必要があります。この例では、IPに基づいてユーザーをフィルタリングするミドルウェアが必要だとします。このコードを使用してミドルウェアフォルダー内にfilter_ip_middleware.pyというファイルを作成します

class FilterIPMiddleware(object):
    # Check if client IP is allowed
    def process_request(self, request):
        allowed_ips = ['192.168.1.1', '123.123.123.123', etc...] # Authorized ip's
        ip = request.META.get('REMOTE_ADDR') # Get client IP
        if ip not in allowed_ips:
            raise Http403 # If user is not allowed raise Error

       # If IP is allowed we don't do anything
       return None

3番目: 'settings.py'にミドルウェアを追加する

私たちは探す必要があります:

  • MIDDLEWARE_CLASSES (ジャンゴ<1.10)
  • MIDDLEWARE (django> = 1.10)

settings.py内にミドルウェアを追加する必要があります(最後の位置に追加します)。それは次のようになります:

MIDDLEWARE = ( #  Before Django 1.10 the setting name was 'MIDDLEWARE_CLASSES'
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
     # Above are django standard middlewares

     # Now we add here our custom middleware
     'yourapp.middleware.filter_ip_middleware.FilterIPMiddleware'
)

できました!これで、すべてのクライアントからのすべてのリクエストがカスタムミドルウェアを呼び出し、カスタムコードを処理します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カスタムミドルウェアでredux-persistを使用する方法

分類Dev

カスタムミドルウェア内でcsurfを使用する方法は?

分類Dev

ストラップでカスタムミドルウェアをセットアップする方法は?

分類Dev

条件付きでカスタムミドルウェアを使用する

分類Dev

AspNetCoreでGlobalExceptionHandlerとカスタムミドルウェアを使用する

分類Dev

OAuthBearerミドルウェアでカスタムRoleClaimTypeを使用する

分類Dev

Laravelを使用して認証ミドルウェアでカスタムログインを開発する方法

分類Dev

ミドルウェア内にスリムコンテナを設定する

分類Dev

Django自体を使用せずにカスタムDjangoミドルウェアをテストする

分類Dev

ASP.NETコアミドルウェアで応答ステータスを設定する

分類Dev

Django:カスタムミドルウェアでNoneTypeエラーが発生する

分類Dev

WooCommerceカスタムチェックアウトフィールドに特定の表示順序を設定する

分類Dev

カスタム.NetCoreミドルウェアのサービスを登録する方法

分類Dev

ヘッダーがすでに設定されている場合にカスタムhttpハンドラー/ミドルウェアを使用するにはどうすればよいですか?

分類Dev

DjangoでMemcached取得タイムアウトを設定する方法

分類Dev

ASP.NET Core2.0のカスタムミドルウェアから認証を要求する方法

分類Dev

Laravelカスタムミドルウェアでurl( '/')値を動的に再定義する

分類Dev

ASP.NETIDなしでCookieミドルウェアを使用する場合のカスタムIsInRole()

分類Dev

Laravelのカスタムミドルウェアでセッションを使用する

分類Dev

除外されたDjangoのカスタムミドルウェア

分類Dev

Djangoミドルウェアで例外を処理する方法は?

分類Dev

認証ミドルウェアの後にカスタムミドルウェアを呼び出す

分類Dev

CKANでカスタマイズされたミドルウェアを作成する方法

分類Dev

WebAPIカスタムミドルウェアから認証済みとしてユーザーを設定します

分類Dev

Laravelでデフォルトのミドルウェアを設定する

分類Dev

カスタムミドルウェア内のTempDataにアクセスする

分類Dev

カスタム ドローアブルで初期評価バーの進行状況を設定する方法

分類Dev

expressjsでリクエストクリーンアップミドルウェアを設定する

分類Dev

expressjsでリクエストクリーンアップミドルウェアを設定する

Related 関連記事

  1. 1

    カスタムミドルウェアでredux-persistを使用する方法

  2. 2

    カスタムミドルウェア内でcsurfを使用する方法は?

  3. 3

    ストラップでカスタムミドルウェアをセットアップする方法は?

  4. 4

    条件付きでカスタムミドルウェアを使用する

  5. 5

    AspNetCoreでGlobalExceptionHandlerとカスタムミドルウェアを使用する

  6. 6

    OAuthBearerミドルウェアでカスタムRoleClaimTypeを使用する

  7. 7

    Laravelを使用して認証ミドルウェアでカスタムログインを開発する方法

  8. 8

    ミドルウェア内にスリムコンテナを設定する

  9. 9

    Django自体を使用せずにカスタムDjangoミドルウェアをテストする

  10. 10

    ASP.NETコアミドルウェアで応答ステータスを設定する

  11. 11

    Django:カスタムミドルウェアでNoneTypeエラーが発生する

  12. 12

    WooCommerceカスタムチェックアウトフィールドに特定の表示順序を設定する

  13. 13

    カスタム.NetCoreミドルウェアのサービスを登録する方法

  14. 14

    ヘッダーがすでに設定されている場合にカスタムhttpハンドラー/ミドルウェアを使用するにはどうすればよいですか?

  15. 15

    DjangoでMemcached取得タイムアウトを設定する方法

  16. 16

    ASP.NET Core2.0のカスタムミドルウェアから認証を要求する方法

  17. 17

    Laravelカスタムミドルウェアでurl( '/')値を動的に再定義する

  18. 18

    ASP.NETIDなしでCookieミドルウェアを使用する場合のカスタムIsInRole()

  19. 19

    Laravelのカスタムミドルウェアでセッションを使用する

  20. 20

    除外されたDjangoのカスタムミドルウェア

  21. 21

    Djangoミドルウェアで例外を処理する方法は?

  22. 22

    認証ミドルウェアの後にカスタムミドルウェアを呼び出す

  23. 23

    CKANでカスタマイズされたミドルウェアを作成する方法

  24. 24

    WebAPIカスタムミドルウェアから認証済みとしてユーザーを設定します

  25. 25

    Laravelでデフォルトのミドルウェアを設定する

  26. 26

    カスタムミドルウェア内のTempDataにアクセスする

  27. 27

    カスタム ドローアブルで初期評価バーの進行状況を設定する方法

  28. 28

    expressjsでリクエストクリーンアップミドルウェアを設定する

  29. 29

    expressjsでリクエストクリーンアップミドルウェアを設定する

ホットタグ

アーカイブ