2012-01-17 4 views
4

Я пытаюсь использовать мензурку пирамиды в рамках пирамиды и ее просто не работает, что создает объекты сеанса, но я не могу получить доступ к ним с линиейPyramid мензурки доступ Sessions, которые были созданы

@view_config(route_name='load_qli', renderer='json') 
def load_qli(request): 
    request.environ['beaker.session'] 

Это дает следующее ошибка

KeyError 

KeyError: 'beaker.session' 

Мой development.ini файл выглядит следующим образом

# pyramid_beaker settings 
session.type = file 
session.data_dir = %(here)s/data/sessions/data 
session.lock_dir = %(here)s/data/sessions/lock 
session.key = customerskey 
session.secret = customerssecret 
session.cookie_on_exception = true 

и init.py как этот

from pyramid.config import Configurator 
from sqlalchemy import engine_from_config 
from qlipe.models import DBSession 
from pyramid_mailer import mailer_factory_from_settings 
from pyramid_beaker import session_factory_from_settings 


def main(global_config, **settings): 
    """ This function returns a Pyramid WSGI application. 
    """ 
    engine = engine_from_config(settings, 'sqlalchemy.') 
    DBSession.configure(bind=engine) 


    # pyramid_beaker add-on 
    session_factory = session_factory_from_settings(settings) 

    config = Configurator(
     settings=settings, 
     session_factory=session_factory 
    ) 

создать сеанс, как этот

def my_view(request): 
    session = request.session 
    session['name'] = 'Fred Smith' 
    session.save() 

Где я буду неправильно?

+0

Я не знаком с пирамидой; вы не можете просто выполнить 'request.session' в первом примере кода? Что отличается от запроса, переданного 'my_view', и запроса, переданного' load_qli'? – AdamKG

ответ

5

Вы должны иметь возможность использовать только способ включения, и пакет pyramid_beaker может инициализировать себя из значений ini.

в вашем ини файле:

pyramid_includes = pyramid_beaker 

или внутри __init__.py файла вашей основной функции в:

config.include('pyramid_beaker') 

Вы можете прочитать больше здесь http://docs.pylonsproject.org/projects/pyramid_beaker/en/latest/#setup

Обычный способ получить доступ к сеансу через запрос, как вы делаете в my_view:

session = request.session 

Пакет pyramid_beaker использует фабрику сеансов пирамиды и способ управления сеансом не через объект request.environement ['beaker.session'], подобный примеру стакана. Для получения дополнительной информации читайте http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/sessions.html

Смежные вопросы