| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Django ミドルウェア

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

Django ミドルウェア

Django |

ミドルウェアの有効化

  • ミドルウェアコンポーネントを有効化するには、Django 設定ファイルの MIDDLEWARE_CLASSES リストにコンポーネントを追加します。

セッションの使い方

セッションを有効にする

  • セッション機能は ミドルウェア として実装されています。
  • セッション機能をオンオフするには MIDDLEWARE_CLASSES 設定を編集します。
  • MIDDLEWARE_CLASSES を編集して、 'django.contrib.sessions.middleware.SessionMiddleware' を入れます。
  • INSTALLED_APPS 設定に 'django.contrib.sessions' を入れ、 manage.py syncdb を実行して、セッションデータを保存するためのデー タベーステーブルを作成します。

セッションエンジンの設定

  • デフォルトでは、 Django はセッションをデータベースに (django.contrib.sessions.models.Session モデルを使って) 保存します。
ファイルベースのセッション
  • SESSION_ENGINE 設定を "django.contrib.sessions.backends.file" にします。
  • 必要に応じて SESSION_FILE_PATH も設定してください (デフォルト値は tempfile.gettempdir() の戻り値で、たいていは /tmp です)。
キャッシュベースのセッション
  • SESSION_ENGINE に "django.contrib.sessions.backends.cache" を設定してください。

ビュー中でセッションを扱う

  • SessionMiddleware を有効にすると、各々の HttpRequest オブジェクト (Django ビュー関数の最初の引数) は辞書ライクオブジェクトの属性 session を持つようになります。この属性は読み書き可能です。

セッションオブジェクトは標準辞書オブジェクトのメソッドを実装し ています

fav_color = request.session['fav_color']
request.session['fav_color'] = 'blue'
del request.session['fav_color']

<blockquote>key がない場合には KeyError を送出します。</blockquote>

fav_color' in request.session
fav_color = request.session.get('fav_color', 'red')
ログインの例
def login(request):
    m = Member.objects.get(username__exact=request.POST['username'])
    if m.password == request.POST['password']:
        request.session['member_id'] = m.id
        return HttpResponse("You're logged in.")
    else:
        return HttpResponse("Your username and password didn't match.")
ログアウトの例
def logout(request):
    try:
        del request.session['member_id']
    except KeyError:
        pass
    return HttpResponse("You're logged out.")