Pyramid Beaker Accès aux séances qui ont été créées
Question
J'essaie d'utiliser le bécher pyramid dans le cadre Pyramid et il ne fonctionne tout simplement pas, il crée les objets de session mais je ne peux pas y accéder avec la ligne
@view_config(route_name='load_qli', renderer='json')
def load_qli(request):
request.environ['beaker.session']
Il donne l'erreur suivante
KeyError
KeyError: 'beaker.session'
Mon fichier de développement.ini ressemble à ceci
# 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
et init.py comme ça
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
)
Je crée la session comme celle-ci
def my_view(request):
session = request.session
session['name'] = 'Fred Smith'
session.save()
Où vais-je me tromper?
La solution
Vous devriez être en mesure d'utiliser simplement la manière inclue et le package Pyramid_Beaker peut s'initialiser à partir des valeurs INI.
Dans votre fichier INI:
pyramid_includes = pyramid_beaker
ou à l'intérieur du fichier __init__.py de votre fonction principale:
config.include('pyramid_beaker')
Vous pouvez lire plus ici http://docs.pylonsproject.org/projects/pyramid_beaker/en/latest/#setup
La façon habituelle d'accéder à la session est via la demande comme vous le faites dans my_view:
session = request.session
Le package pyramid_beaker utilise l'usine de session Pyramid et la façon dont il gère la session n'est pas via l'objet request.environment ['beaker.session'] comme l'exemple de beaker. Pour plus d'informations, lisez http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/sessions.html