Django Cookie&Session

出典: UeblogWiki

目次

Topic

Cookie

Cookieの扱いはHttpRequestに辞書相当で扱えます。

セットする場合はHttpResponseオブジェクトのset_cookieメソッドを使います

例
def show_hoge(request):
    if "hoge" in request.COOKIES:
        return HttpResponse("Your hoge is %s" % request.COOKIES["hoge"])
    else:
        return HttpResponse("You don't have hoge") 

def set_hoge(request):
    if "hoge" in request.GET:
        response = HttpResponse("Your hoge is now %s " % requset.GET["hoge"])
        response.set_cookie("hoge", request.GET["hoge"],
                                         max_age= 60*60*24*14 #14日保存
                                        )

    else: 
        response = HttpResponse("You didn't give a favorite hoge")
    return response


set_cookieメソッドの引数はほかにmax_age, expires, path, domain, secureがあります。

  • max_age Cookieの有効期限を指定できます。expireとmax_ageを指定しない場合はプラウザの終了時にCookieが消えます。
  • expire Wdy, DD-Mon-YY HH:MM:SS GMT 形式で有効期限を指定できます。max_ageとexpire両方指定している場合はexpireの方を優先させます。
  • path pathにマッチした場合のみ有効になります。
  • domain 指定したドメインのみで有効になります。
  • secure httpsの時のみ有効になります。

settings.pyでSESSION_EXPIRE_AT_BROWSER_CLOSEがFalseに設定してある必要があります(defaultではFalse)。

request.session.test_cookie

  • request.session.set_test_cookie()
  • request.session.test_cookie_worked()
  • request.session.delete_cookie()

Session

settings.pyに

  • MIDDLEWARE_CLASSESにdjango.contrib.sessions.middleware.SessionMiddlewareを追加
  • INSTALLED_APPSにdjango.contrib.sessionsを追加

デフォルトのsettings.pyでは設定されている。

参考