4

Pyramidフレームワークでピラミッドビーカーを使用しようとしていますが、動作しないだけでセッションオブジェクトが作成されますが、次の行でアクセスできません

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

どこが間違っているのですか?

4

1 に答える 1

5

includeウェイを使用するだけで、pyramid_beakerパッケージはini値からそれ自体を初期化できます。

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をご覧ください。

于 2012-01-17T12:38:52.360 に答える