Ошибка загрузки конфигурации пирамиды - PullRequest
3 голосов
/ 24 апреля 2011

У меня проблема с созданием приложения в Pyramid.Когда я пытаюсь служить через пастера, я получаю:

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

В чем может быть причина этого?Я даже не изменил эту конфигурацию в последнее время, только остальная часть приложения.

Ответы [ 2 ]

3 голосов
/ 24 апреля 2011

Я подозреваю, что вы столкнулись с ошибкой, исправленной в более новых ревизиях Пирамиды;Ваша трассировка указывает, что либо args, либо defaults равно None, но эта ветвь кода не может быть достигнута, если args не равно None, оставляя возможность того, что defaults равно None.Я обнаружил следующую фиксацию для пирамид, которая добавляет специальный тест для defaults, равный None:

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

Я говорю, что у вас есть метод без каких-либо значений по умолчанию и только параметр запроса (method(self, request), обходной путь - добавить аргумент ключевого слова со значением по умолчанию (method(self, request, dummy=None).

Отказ от ответственности: у меня еще не было возможности работать с пирамидой, поэтому мой анализ основан исключительно наКодовая база пирамиды.

0 голосов
/ 24 апреля 2011

config.add_route принимает только 1 позиционный аргумент, ваш второй аргумент должен использовать ключевое слово с pattern.

Во-вторых, я не думаю, что возможно иметь тот же шаблон для route иtraverse.С ключевым словом traverse вы определяете, где должен начинаться root.Это объясняется в документации Configurator API .

Возникшее исключение ошибки может быть более информативным.

...