Python 金字塔烧杯访问已创建的会话

Python 金字塔烧杯访问已创建的会话,python,session,pyramid,beaker,Python,Session,Pyramid,Beaker,我试图在金字塔框架中使用金字塔烧杯,但它不起作用。它创建了会话对象,但我无法使用该行访问它们 @view_config(route_name='load_qli', renderer='json') def load_qli(request): request.environ['beaker.session'] 它给出了以下错误 KeyError KeyError: 'beaker.session' 我的development.ini文件如下所示 # pyramid_beaker

我试图在金字塔框架中使用金字塔烧杯,但它不起作用。它创建了会话对象,但我无法使用该行访问它们

@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
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()
像这样初始化

# 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
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()
我这样创建会话

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

我哪里出错了?

您应该能够使用include方式,并且金字塔烧杯包可以从ini值初始化自身

在ini文件中:

pyramid_includes = pyramid_beaker
或者在主函数的_uinit__uu.py文件中:

config.include('pyramid_beaker')
你可以在这里读更多

访问会话的通常方式是通过请求,就像您在my_视图中所做的那样:

session = request.session

pyramid_Biker包使用pyramid会话工厂,它管理会话的方式不是通过request.environment['biker.session']对象,就像Biker的示例一样。欲了解更多信息,请阅读

我不熟悉金字塔;您不能只在第一个代码示例中执行
request.session
?传递到
my\u view
的请求与传递到
load\u qli
的请求有什么不同?