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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top