В настоящее время я перемещаю проект из Pylons 1.0 в Pyramid.
Моя проблема до сих пор состоит в том, как использовать спокойные маршруты в Пирамиде. В настоящее время я использую pyramid_handlers, так как это казалось хорошим началом. Я использую Akhet.
Итак, вот две важные линии в моем маршруте:
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts")
# or
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts", action="new")
Мое действие:
@action(name="new_account", renderer='accounts/new.mako', request_method='GET')
Ошибки:
TypeError: 'Accounts' object is not callable
or
ValueError: Could not convert view return value "{}" into a response Object.
Учетные записи ... пока все хорошо, легко понять, что pyramid_handlers, кажется, не регистрирует нормально или не обрабатывает имя так, как должно ... что сказано в request.matched_route
, у меня есть "new_account".
Если я добавлю "action = 'new'" в определение маршрута, он найдет функцию, но не будет слушать определение действия. Другими словами, он не сможет найти средство визуализации и ожидать объект ответа. Параметр request_method
на самом деле ничего не делает, поэтому удаление его не изменит никаких результатов.
Короче говоря, @action(name="..."
не работает. Пирамиде не удается найти функцию самостоятельно, и если имя функции определено, она не может выполнить оператор действия.
Понятия не имею, что я делаю не так.
Правильный способ сделать это.
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts", action="new_account")
EDIT
route_name
, вероятно, будет использоваться функциями генератора URL. В то время как действие - фактическое имя в @action. Как я понял, @action name было именем маршрута, а не именем действия. Теперь это имеет больше смысла.