гей-сессии не удаляют данные - PullRequest
0 голосов
/ 05 декабря 2011

Я добавил некоторые функциональные возможности в библиотеку gae-session, чтобы я мог иметь флэш-данные; Это означает, что данные существуют только между 2 запросами определенного пользователя. Вот код, который я добавил:

def set_flashdata(key,val=None):
    logging.info('set flashdata '+key+'='+val )
    sess = get_current_session()
    if val:
        sess['flash_'+key]=val
        return
    for x in key:
        sess['flash_'+x]=key[x]

def get_flashdata():
    sess = get_current_session()
    flash = {}
    for key in sess:
        if(key.startswith("flash_")):
            flash[key[6:]]=sess.pop(key)
            logging.info('received flashdata '+key+'='+sess[key])
    logging.info('fetched '+str(len(flash))+' flash items')
    return flash

def has_flashdata():
    sess = get_current_session()
    for key in sess:
        if key.startswith('flash_'):
            return True
    return False

но когда я запускаю get_flashdata, я получаю это:

File "/Users/frederikcreemers/Documents/projects/web/myproject/gaesessions/__init__.py", line 533, in get_flashdata
    logging.info('received flashdata '+key+'='+sess[key])
File "/Users/frederikcreemers/Documents/projects/web/myproject/gaesessions/__init__.py", line 393, in __getitem__
    return self.data.__getitem__(key)
KeyError: 'flash_msg_type'

Итак, программа сообщает, что ключ mg_type отсутствует в sess, но, поскольку я перебираю ключи sess, он должен быть там.

1 Ответ

3 голосов
/ 05 декабря 2011

В строке выше вы позвонили pop, который удаляет элемент из словаря.

...