DjangoでのCookieとSessionの基本構成と設定


Cookie
1、Cookieを取得する:
request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)

パラメータ:
default:デフォルト
salt:暗号化塩
      max_age:バックグラウンド制御の有効期限
2、Cookieの設定:
rep = HttpResponse(...)   rep = render(request, ...)
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='   ',...)

パラメータ:
キー
value=',値
      max_age=None,タイムアウト時間
expires=None,タイムアウト時間(IE requires expires,so set it if hasn't been already.)
path='/',Cookieが有効なパス,/はルートパスを表し,特殊:パスとのcookieは任意のurlのページにアクセスできる
domain=None、Cookieが有効なドメイン名
Secure=False,https転送
httponly=Falseはhttpプロトコルのみで転送でき、JavaScriptでは取得できません(絶対ではなく、最下位のパケットは取得できますし、上書きできます)
クッキーはクライアントのパソコンに保存されているので、JavaScriptやjqueryでもクッキーを操作できます.

$.cookie("list_pager_num", 30,{ path: '/' });

Session
DjangoではデフォルトでSessionがサポートされており、その には が するための5 のSessionが されています.
データベース(デフォルト)
キャッシュ
ファイル
キャッシュ+データベース
クッキー
1、データベースセッション
Djangoはデフォルトでセッションをサポートし、デフォルトではデータベースにセッションデータを します.すなわち、django_セッションテーブルにあります.
 
a.settingsを する.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.db'#エンジン(デフォルト)
     
    SESSION_COOKIE_NAME="sessionid"#Sessionのクッキーがブラウザに されているときのkey、すなわち、sessionid=ランダム (デフォルト)
    SESSION_COOKIE_PATH="/"#Sessionのクッキーが するパス(デフォルト)
    SESSION_COOKIE_DOMAIN=None#Sessionのクッキーが するドメイン (デフォルト)
    SESSION_COOKIE_SECURE=False#Https クッキーかどうか(デフォルト)
    SESSION_COOKIE_HTTPONLY=True#セッションのクッキーがhttp のみをサポートしているかどうか(デフォルト)
    SESSION_COOKIE_AGE=1209600#Sessionのクッキー (2 )(デフォルト)
    SESSION_EXPIRE_AT_BROWSER_CLOSE=False#ブラウザを じてセッションが れになるかどうか(デフォルト)
    SESSION_SAVE_EVERY_REQUEST=False#はリクエストごとにセッションを するか、デフォルト に する(デフォルト)
 
 
b.
 
def index(request):
        #   、  、  Session   
        request.session['k1']
        request.session.get('k1',None)
        request.session['k1'] = 123
        request.session.setdefault('k1',123) #       
        del request.session['k1']
 
        #     、 、   
        request.session.keys()
        request.session.values()
        request.session.items()
        request.session.iterkeys()
        request.session.itervalues()
        request.session.iteritems()

 
 
#ユーザーセッションのランダム
        request.session.session_key
 
#すべてのセッションの が の より さいデータを
        request.session.clear_expired()
 
#ユーザーセッションのランダム がデータベースにあるかどうかを します.
        request.session.exists("session_key")
 
# のユーザーのすべてのセッションデータを
        request.session.delete("session_key")
 
        request.session.set_expiry(value)
*valueが の 、sessionは に します.
*valueがdatatimeまたはtimedeltaの 、sessionはこの に します.
*valueが0の 、ユーザーはブラウザセッションを じると になります.
*valueがNoneの 、sessionはグローバルsessionの ポリシーに します.
2、キャッシュセッション
a.settingsを する.py
    SESSION_ENGINE = 'django.contrib.sessions.backends.Cache'エンジン
    SESSION_CACHE_ALIAS='default'#で されるキャッシュ (デフォルトのメモリキャッシュ、またはmemcache)は、キャッシュの に します.
    SESSION_COOKIE_NAME=「sessionid」#Sessionのクッキーがブラウザに されているときのkey、すなわち、sessionid=ランダム
    SESSION_COOKIE_PATH="/"#Sessionのクッキーが するパス
    SESSION_COOKIE_DOMAIN=None#Sessionのクッキーが するドメイン
    SESSION_COOKIE_SECURE=False#Https クッキー
    SESSION_COOKIE_HTTPONLY=True#セッションのクッキーがhttp のみをサポートしているか
    SESSION_COOKIE_AGE=1209600#Sessionのクッキー (2 )
    SESSION_EXPIRE_AT_BROWSER_CLOSE=False#ブラウザを じてセッションを れにするかどうか
    SESSION_SAVE_EVERY_REQUEST=False#はリクエストごとにセッションを するか、デフォルトで してから するか
b.

3、ファイルセッション
a.settingsを する.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.file'#エンジン
    SESSION_FILE_PATH=None#はファイルパスをキャッシュし、Noneの はtempfileモジュールを して アドレスtempfileを する.gettempdir()
:/var/folders/d 3/j 9 tj 0 gz 93 dg 06 bmwxmhh 6_xm0000gn/T
    SESSION_COOKIE_NAME=「sessionid」#Sessionのクッキーがブラウザに されているときのkey、すなわち、sessionid=ランダム
    SESSION_COOKIE_PATH="/"#Sessionのクッキーが するパス
    SESSION_COOKIE_DOMAIN=None#Sessionのクッキーが するドメイン
    SESSION_COOKIE_SECURE=False#Https クッキー
    SESSION_COOKIE_HTTPONLY=True#セッションのクッキーがhttp のみをサポートしているか
    SESSION_COOKIE_AGE=1209600#Sessionのクッキー (2 )
    SESSION_EXPIRE_AT_BROWSER_CLOSE=False#ブラウザを じてセッションを れにするかどうか
    SESSION_SAVE_EVERY_REQUEST=False#はリクエストごとにセッションを するか、デフォルトで してから するか
b.

4、キャッシュ+データベースセッション
データベースは に され、キャッシュは に されます.
 
a.settingsを する.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'#エンジン
b.

5、 クッキーセッション
a.settingsを する.py
     
    SESSION_ENGINE = 'django.contrib.sessions.backends.signed_Cookies#エンジン
b.

:Sessionユーザー
def login(func):
    def wrap(request, *args, **kwargs):
        #      ,       
        if request.path == '/test/':
            return redirect('http://www.baidu.com')
        return func(request, *args, **kwargs)
    return wrap