2013-01-02 137 views
0

我在磁盘上存储django会话。我有一个特殊情况,我需要通过每个会话并删除某些密钥并保留其余部分。因此清除整个缓存不是一个选项。当会话在db中时,我能够遍历各个会话。但随着会议商店,我卡住了。我需要做的是与此类似:Django会话存储所有会话

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

回答

1

看看如何迭代在clear_expired方法django.contrib.sessions.backends.file完成:

@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()