3

Pyramid でアプリを作成する際に問題が発生しました。Paster を介してサービスを提供しようとすると、次のようになります。

  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}')")

この理由は何ですか?最近、その構成を変更していません。アプリの残りの部分だけです。

4

2 に答える 2

3

Pyramid の新しいリビジョンで修正されたバグに遭遇したのではないかと思います。トレースバックは、argsまたはdefaultsがであることを示していますがNone、 が でない限りそのコード ブランチに到達できずargs、代わりにNoneである可能性が残されていdefaultsますNonedefaultsNone であることの特定のテストを追加する Pyramids への次のコミットを見つけました。

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

デフォルトがなく、リクエスト パラメータ ( のみのメソッドがあるとします。method(self, request)回避策は、キーワード引数にデフォルト ( を追加することですmethod(self, request, dummy=None)

免責事項: まだ Pyramid を使用する機会がなかったので、私の分析は純粋に Pyramid コードベースに基づいています。

于 2011-04-24T11:21:28.967 に答える
0

config.add_routeは 1 つの位置引数のみを受け入れます。2 番目の引数は with キーワードで使用する必要がありますpattern

route第二に、とで同じパターンを持つことは不可能だと思いますtraversetraverseキーワードを使用して、どこからroot始めるべきかを定義しています。ConfiguratorAPI ドキュメントで説明されています。

ただし、発生したエラー例外はより有益な場合があります。

于 2011-04-24T11:32:21.670 に答える