2012-09-25 30 views
1

我试图设置一个回调config.set_request_property,但回调永远不会被调用。没有错误消息,它只是默默地失败。为什么它不起作用?我怎样才能找出问题所在?金字塔: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

我看到的唯一错误是,您没有向我们展示您使用该属性的位置?只有在调用属性时才会调用它们。你有没有在视图中调用request.user的代码,并且由于该属性不存在而出现错误?如果您希望函数能够自动调用每个请求,这正是set_request_property正试图避免的。

+0

这是问题所在。我不是在调用这个属性,因此它的功能没有被调用。谢谢你的帮助。 – zakdances

1

pyramid.config API文档:

调用既可以接受的要求作为其唯一的位置参数调用[...]

现在我不知道如果这可能导致你的问题,但它需要接受一个工作请求(虽然我希望引发一个异常,而不是一个沉默的失败)。

+0

这是一个很好的猜测和一个很好的校正,但我试过包括一个请求参数,结果没有什么不同。我已更新了我的示例,并进行了更正。 – zakdances

相关问题