DjangoでのCookieとSessionの基本構成と設定
Cookie
1、Cookieを取得する:
パラメータ:
default:デフォルト
salt:暗号化塩
max_age:バックグラウンド制御の有効期限
2、Cookieの設定:
パラメータ:
キー
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でもクッキーを操作できます.
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.
#ユーザーセッションのランダム
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ユーザー
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