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 可以是接受请求作为其单个位置参数的可调用对象[...]

现在我不知道这是否会导致您的问题,但它需要接受工作请求(尽管我希望抛出异常,而不是静默失败)。

于 2012-09-25T15:34:57.823 回答