オプションで、条件を満たすすべてのビューにクワーグを渡すミドルウェアを作成しようとしています。
問題は、ミドルウェアのセットアップ方法の例が見つからないことです。私がしたいメソッドをオーバーライドするクラスを見てきましたprocess_view
:
Class CheckConditionMiddleware(object):
def process_view(self, request):
return None
しかし、このクラスはどこに置くのですか?ミドルウェアアプリを作成し、このクラスをその中に配置してから参照できsettings.middleware
ますか?
それがない場合は、次の構造に従ってアプリ内にミドルウェアフォルダーを作成する必要があります。
yourproject/yourapp/middleware
ミドルウェアフォルダーは、settings.py、urls、templatesと同じフォルダーに配置する必要があります。
重要:ミドルウェアフォルダー内に__init__.py空のファイルを作成して、アプリがこのフォルダーを認識できるようにしてください
次に、カスタムミドルウェアのファイルを作成する必要があります。この例では、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
私たちは探す必要があります:
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]
コメントを追加