2013-01-02 6 views
0

디스크에 장고 세션을 저장하고 있습니다. 나는 각 세션을 거쳐 특정 키를 삭제하고 나머지를 유지해야하는 특별한 경우가 있습니다. 따라서 전체 캐시를 지우는 것은 옵션이 아닙니다. 세션이 DB에있을 때 개별 세션을 반복 할 수있었습니다. 하지만 세션 스토어에서 나는 붙어있다.Django 세션 저장 모든 세션

sessions=sessionstore.all() 
    for session in sessions: 
     session.pop('key1') 
     session.pop('key2') 
     if session lastmodified before some time: 
     del session 

답변

1

반복 django.contrib.sessions.backends.file에 clear_expired 방식으로 수행하는 방법을 봐 :

@classmethod 
def clear_expired(cls): 
    storage_path = cls._get_storage_path() 
    file_prefix = settings.SESSION_COOKIE_NAME 

    for session_file in os.listdir(storage_path): 
     if not session_file.startswith(file_prefix): 
      continue 
     session_key = session_file[len(file_prefix):] 
     session = cls(session_key) 
     # When an expired session is loaded, its file is removed, and a 
     # new file is immediately created. Prevent this by disabling 
     # the create() method. 
     session.create = lambda: None 
     session.load() 
내가 뭘해야이 유사하다