金字塔配置加载

2024-10-02 00:34:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在金字塔中创建应用程序的问题。当我试图用贴纸发球时,我得到:

  File "/home/viraptor/blah/blah/__init__.py", line 23, in main
    return config.make_wsgi_app()
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 916, in make_wsgi_app
    self.commit()
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 491, in commit
    self._ctx.execute_actions()
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/zope/configuration/config.py", line 626, in execute_actions
    callable(*args, **kw)
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 1291, in register
    derived_view = deriver(view)
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2681, in __call__
    self.mapped_view(view))))))))
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2624, in inner
    wrapped_view = wrapped(self, view)
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2693, in mapped_view
    mapped_view = mapper(**self.kw)(view)
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2860, in __call__
    view = self.map_nonclass(view)
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2876, in map_nonclass
    ronly = requestonly(view, self.attr)
  File "/home/viraptor/pyramid/lib/python2.6/site-packages/pyramid/config.py", line 2966, in requestonly
    if len(args) - len(defaults) == 1:
zope.configuration.config.ConfigurationExecutionError: <type 'exceptions.TypeError'>: object of type 'NoneType' has no len()
  in:
  ('/home/viraptor/blah/blah/__init__.py', 22, 'main', "config.add_route('customer', '/customer/{customer_id}', view='blah.views.customer.view', view_renderer='customer_view.mak', view_permission='view', traverse='/customer/{customer_id}')")

为什么会这样?我最近甚至没有改变这个配置,只是应用程序的其他部分。在


Tags: inpyselfviewpyramidconfighomelib
2条回答

我怀疑您遇到了在新版本的Pyramid中修复的错误;您的回溯表明args或{}是None,但是除非args不是{},否则代码分支无法到达,留下的可能是{}是{}。我发现以下提交到金字塔的操作为defaults添加了一个特定的测试:

https://github.com/Pylons/pyramid/commit/f168197609169fb01b65adeb3eb59d069000fe2c

我假设您有一个没有任何默认值的方法,只有一个请求参数(method(self, request)),解决方法是添加一个带有默认值(method(self, request, dummy=None))的关键字参数。在

免责声明:还没有机会使用金字塔,所以我的分析完全基于金字塔代码库。在

config.add_route只接受1个位置参数,您的第二个参数应与pattern一起使用关键字。在

其次,我不认为route和{}有相同的模式。使用traverse关键字可以定义root应该从哪里开始。在^{} API documentation中有解释。在

不过,引发的错误异常可以提供更多信息。在

相关问题 更多 >

    热门问题