Django 5種類のSession使用方法解析
紹介する
Session:コンピュータにおいて、特にインターネットアプリケーションでは、「セッション制御」と呼ばれています。Sessionオブジェクトは、特定のユーザセッションに必要な属性および設定情報を記憶する。このように、ユーザがアプリケーションのWebページ間をジャンプすると、Sessionオブジェクトに格納されている変数は失われることなく、ユーザセッション全体に存在し続けることになる。
ユーザがアプリケーションからのWebページを要求すると、そのユーザがまだセッションしていない場合、Webサーバは自動的にSessionオブジェクトを作成する。セッションが失効した場合、または中断された場合、サーバはセッションを終了します。Sessionオブジェクトの最も一般的な使い方は、ユーザーの最初のオプションを記憶することである。
sessionは、cookieに基づいて作成され、ユーザがブラウザを開いてサーバにアクセスすると、サーバは各ユーザのブラウザのためにセッションオブジェクトを作成し、セッションオブジェクトごとにJsessionid番号を作成します。sessionオブジェクトの作成に成功すると、cookie方式でこのJsessionid号をブラウザに返信し、ユーザが再度サーバにアクセスすると、Jsessionid号のcookieデータを持ってサーバにアクセスし、サーバは異なるsessionid号を通じて関連するsessionidオブジェクトを探し出します。異なるセッションオブジェクトを通じて異なるユーザサービスを提供する。
使用
DjangoではデフォルトでSessionをサポートしています。その内部には開発者のための5種類のSessionがあります。データベース(デフォルト) キャッシュ ファイル キャッシュ+データベース 暗号化クッキー
データベースセッション
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.c.ache'21853;エンジン
SESSION_CACHE_ALIAS='default'铅が使用するキャッシュの別名(デフォルトメモリキャッシュ、memcache)は、ここで別名キャッシュの設定に依存します。
SESSION_COOKIE_NAME=「sessionid」〓Sessionのcookieがブラウザに保存されているときのkey、すなわち:sessionid=ランダム文字列
SESSION_COOKIE_PATH=「/」〹Sessionのクッキー保存の経路
SESSION_COOKIE_DOMAIN=None_Sessionのcookieが保存しているドメイン名
SESSION_COOKIE_SECURE=False〓〓Https伝送cookieかどうか
SESSION_COOKIE_HTTPONLY=True〓Sessionのクッキーはhttp転送のみ対応しています。
SESSION_COOKIE_AGE=1209600皘Sessionのクッキー失効日(2週間)
SESSION_EXPIRE_ATBROWSER_CLOSE=False〓ブラウザが閉じられていますか?Sessionが期限切れになります。
SESSION_SAVE_EVERY_REQUEST=False〓〓は要求ごとにSessionを保存するかどうか、デフォルトの修正後に保存します。
b.使用
同上
ファイルセッション
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.file'sエンジン
SESSION_FILE_PATH=None葃キャッシュファイルのパスは、Noneであれば、tempfileモジュールを使用して、一時アドレスtempfile.gettempdir()唵
例えば:/var/folders/d 3/J 9 tj 0 gz 06 bmwxh6_xm 0000 gn/T
SESSION_COOKIE_NAME=「sessionid」〓Sessionのcookieがブラウザに保存されているときのkey、すなわち:sessionid=ランダム文字列
SESSION_COOKIE_PATH=「/」〹Sessionのクッキー保存の経路
SESSION_COOKIE_DOMAIN=None_Sessionのcookieが保存しているドメイン名
SESSION_COOKIE_SECURE=False〓〓Https伝送cookieかどうか
SESSION_COOKIE_HTTPONLY=True〓Sessionのクッキーはhttp転送のみ対応しています。
SESSION_COOKIE_AGE=1209600皘Sessionのクッキー失効日(2週間)
SESSION_EXPIRE_ATBROWSER_CLOSE=False〓ブラウザが閉じられていますか?Sessionが期限切れになります。
SESSION_SAVE_EVERY_REQUEST=False〓〓は要求ごとにSessionを保存するかどうか、デフォルトの修正後に保存します。
b.使用
同上
キャッシュ+データベースセッション
データベースは耐久化のために使用され、キャッシュは効率を高めるために使用されます。
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.cached_db菗エンジン
b.使用
同上
暗号化クッキーSession
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.signed_クッキーエンジン
b.使用
同上
ログイン状態検証
Session:コンピュータにおいて、特にインターネットアプリケーションでは、「セッション制御」と呼ばれています。Sessionオブジェクトは、特定のユーザセッションに必要な属性および設定情報を記憶する。このように、ユーザがアプリケーションのWebページ間をジャンプすると、Sessionオブジェクトに格納されている変数は失われることなく、ユーザセッション全体に存在し続けることになる。
ユーザがアプリケーションからのWebページを要求すると、そのユーザがまだセッションしていない場合、Webサーバは自動的にSessionオブジェクトを作成する。セッションが失効した場合、または中断された場合、サーバはセッションを終了します。Sessionオブジェクトの最も一般的な使い方は、ユーザーの最初のオプションを記憶することである。
sessionは、cookieに基づいて作成され、ユーザがブラウザを開いてサーバにアクセスすると、サーバは各ユーザのブラウザのためにセッションオブジェクトを作成し、セッションオブジェクトごとにJsessionid番号を作成します。sessionオブジェクトの作成に成功すると、cookie方式でこのJsessionid号をブラウザに返信し、ユーザが再度サーバにアクセスすると、Jsessionid号のcookieデータを持ってサーバにアクセスし、サーバは異なるsessionid号を通じて関連するsessionidオブジェクトを探し出します。異なるセッションオブジェクトを通じて異なるユーザサービスを提供する。
使用
DjangoではデフォルトでSessionをサポートしています。その内部には開発者のための5種類のSessionがあります。
Django Session, Session , :django_session 。
a. settings.py
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # ( )
SESSION_COOKIE_NAME = "sessionid" # Session cookie key, :sessionid= ( )
SESSION_COOKIE_PATH = "/" # Session cookie ( )
SESSION_COOKIE_DOMAIN = None # Session cookie ( )
SESSION_COOKIE_SECURE = False # Https cookie( )
SESSION_COOKIE_HTTPONLY = True # Session cookie http ( )
SESSION_COOKIE_AGE = 1209600 # Session cookie (2 )( )
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Session ( )
SESSION_SAVE_EVERY_REQUEST = False # Session, ( )
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()
# 3.0 3
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems()
# session
request.session.session_key
# Session
request.session.clear_expired()
# session
request.session.exists("session_key")
# Session
request.session.delete("session_key")
request.session.delete()
request.session.flush()
request.session.set_expiry(value)
* value ,session 。
* value datatime timedelta,session 。
* value 0, session 。
* value None,session session 。
キャッシュセッションa.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.c.ache'21853;エンジン
SESSION_CACHE_ALIAS='default'铅が使用するキャッシュの別名(デフォルトメモリキャッシュ、memcache)は、ここで別名キャッシュの設定に依存します。
SESSION_COOKIE_NAME=「sessionid」〓Sessionのcookieがブラウザに保存されているときのkey、すなわち:sessionid=ランダム文字列
SESSION_COOKIE_PATH=「/」〹Sessionのクッキー保存の経路
SESSION_COOKIE_DOMAIN=None_Sessionのcookieが保存しているドメイン名
SESSION_COOKIE_SECURE=False〓〓Https伝送cookieかどうか
SESSION_COOKIE_HTTPONLY=True〓Sessionのクッキーはhttp転送のみ対応しています。
SESSION_COOKIE_AGE=1209600皘Sessionのクッキー失効日(2週間)
SESSION_EXPIRE_ATBROWSER_CLOSE=False〓ブラウザが閉じられていますか?Sessionが期限切れになります。
SESSION_SAVE_EVERY_REQUEST=False〓〓は要求ごとにSessionを保存するかどうか、デフォルトの修正後に保存します。
b.使用
同上
ファイルセッション
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.file'sエンジン
SESSION_FILE_PATH=None葃キャッシュファイルのパスは、Noneであれば、tempfileモジュールを使用して、一時アドレスtempfile.gettempdir()唵
例えば:/var/folders/d 3/J 9 tj 0 gz 06 bmwxh6_xm 0000 gn/T
SESSION_COOKIE_NAME=「sessionid」〓Sessionのcookieがブラウザに保存されているときのkey、すなわち:sessionid=ランダム文字列
SESSION_COOKIE_PATH=「/」〹Sessionのクッキー保存の経路
SESSION_COOKIE_DOMAIN=None_Sessionのcookieが保存しているドメイン名
SESSION_COOKIE_SECURE=False〓〓Https伝送cookieかどうか
SESSION_COOKIE_HTTPONLY=True〓Sessionのクッキーはhttp転送のみ対応しています。
SESSION_COOKIE_AGE=1209600皘Sessionのクッキー失効日(2週間)
SESSION_EXPIRE_ATBROWSER_CLOSE=False〓ブラウザが閉じられていますか?Sessionが期限切れになります。
SESSION_SAVE_EVERY_REQUEST=False〓〓は要求ごとにSessionを保存するかどうか、デフォルトの修正後に保存します。
b.使用
同上
キャッシュ+データベースセッション
データベースは耐久化のために使用され、キャッシュは効率を高めるために使用されます。
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.cached_db菗エンジン
b.使用
同上
暗号化クッキーSession
a.settings.pyを配置する
SESSION_ENGINE='django.com ntrib.sessions.backends.signed_クッキーエンジン
b.使用
同上
ログイン状態検証
def login_status(func):
def warp(request,*args,**kwargs):
user = request.session.get("username")
if user:
kwargs["username"] = user
return func(request,*args,**kwargs)
return redirect(login)
return warp
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。