1

でコールバックを設定しようとしていますconfig.set_request_propertyが、コールバックが呼び出されません。エラーメッセージはありません。ただ静かに失敗します。なぜ機能しないのですか?問題がどこにあるかをどのように追跡できますか?

これが私の使用しているコードです__init__

def callbackTest(request):
    print 'Callback worked!'
    return True

def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    # pyramid_beaker add-on  
    session_factory = session_factory_from_settings(settings)
    set_cache_regions_from_settings(settings)

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

    config.add_static_view('gfx', 'gfx', cache_max_age=3600)
    config.add_static_view('fonts', 'fonts', cache_max_age=3600)
    config.add_static_view('css', 'css/compiled', cache_max_age=3600)
    config.add_static_view('js', 'js/compiled', cache_max_age=3600)



    print 'callbackTest callback should be set...'
    config.set_request_property(callbackTest, 'user', reify=True)

    #********************************************************
    # Authentication
    #********************************************************
    authn_policy = AuthTktAuthenticationPolicy(secret='asecret',
                                           callback=groupfinder)
    authz_policy = ACLAuthorizationPolicy()
    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)


    #********************************************************
    # View setup
    #********************************************************

    config.add_route('IndexTest', '/')
    config.add_route('Home', '/h')



    config.scan()
    return config.make_wsgi_app()

誰かが私のエラーをここで見ることができますか?

4

2 に答える 2

4

私が見る唯一のエラーは、あなたがプロパティを使用している場所を私たちに示さないということですか?プロパティは、呼び出したときにのみ呼び出されます。ビューで呼び出しているコードがありrequest.user、そのプロパティが存在しないためにエラーが発生していますか?関数がすべてのリクエストで自動的に呼び出されることを期待している場合、それはまさにset_request_property回避しようとしていることです。

于 2012-09-25T16:50:48.110 に答える
1

pyramid.config APIドキュメントから:

callableは、リクエストを単一の位置パラメータとして受け入れるcallableのいずれかです[...]

これが問題の原因であるかどうかはわかりませんが、作業の要求を受け入れる必要があります(ただし、サイレントエラーではなく、例外がスローされることを期待します)。

于 2012-09-25T15:34:57.823 に答える