[Django] ログインフィルターを作ってみる

WEBアプリでよくログインしているか、していないかを判断するフィルターなどを作る事がある。
DjangoでもMiddlewareを使えばできそうなので、作ってみる。

参考URL
http://michilu.com/django/doc-ja/middleware/

cd SRC
vi settings.py
-----
MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.middleware.doc.XViewMiddleware',
     'site.app.middleware.LoginMiddleware',  ←←← ここにMiddlewareのクラス名追加!!!順番重要。SessionMiddlewareを先に指定しないと、request.sessionとか使えなかったりする。
 )
-----

クラス

site/app/middleware.py に以下を記載。

 # -*- coding: utf-8 -*-
 
 from django.template import Context
 from django.template.loader import get_template
 from django.shortcuts import render_to_response
 
 class LoginMiddleware(object):
 
     def _is_login_ok(self, session_key):
         """
         ログインチェックを行う
         """
         if ログインOK:
             return True
         else:
             return False
 
     def process_request(self, request):
             if self._is_login_ok(request.session.session_key):
                 # リクエストされたページに遷移
                 return None
             else:
                 # ログインページに遷移させる
                 return render_to_response('login.html')