セッションが Django でどのように機能するかを理解しようとしています。のソースコードを見るSessionMiddleware
:
class SessionMiddleware(object):
def process_request(self, request):
engine = import_module(settings.SESSION_ENGINE)
session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
request.session = engine.SessionStore(session_key)
私がそれを正しく理解していれば、すべてのリクエスト
は Cookie からSessionMiddleware.process_request()
を取得し、sessionid
それを使用して新しいSessionStore
インスタンスを
作成しますsessionid
。
__init__()
そして、 ofSessionStore
と
のソースを見たときSessionBase
:
class SessionStore(SessionBase):
def __init__(self, session_key=None):
super(SessionStore, self).__init__(session_key)
class SessionBase(object):
def __init__(self, session_key=None):
self._session_key = session_key
self.accessed = False
self.modified = False
したがって、基本的には、指定されたセッションが既に存在するSessionStore
かどうかを確認するためにデータベースを検索することなく、新しいインスタンスを作成するだけです。sessionid
しかし、それがセッションの要点ではないでしょうか? Django はリクエストごとにセッションデータベースを調べて、セッションが既に存在するかどうかを確認する必要があるのでしょうか? このデータベース ルックアップがどこかで行われていると思いますが、見つかりません。
どこで見つけられるか教えてもらえますか?または、Django でセッションがどのように機能するかを誤解していましたか?
ありがとう