Я использую некоторые пользовательские предикаты в одном из приложений Pyramid. Поскольку Пирамида версии 1.5, при запуске приложения, отображается следующее сообщение:Пользовательские предикаты маршрута в Pyramid
my_project\__init__.py:110: DeprecationWarning: The "custom_predicates"
argument to Configurator.add_route is deprecated as of Pyramid 1.5. Use
"config.add_route_predicate" and use the registered route predicate as a
predicate argument to add_route instead. See "Adding A Third Party
View,Route, or Subscriber Predicate" in the "Hooks" chapter
of the documentation for more information.
Я хотел бы использовать новый метод ... но я не могу найти один совет в том, как это сделать ...
Даже документ иллюстрирует старый метод: https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html#custom-route-predicates
Я пытался определенного моего пользовательского предиката в моем my_project\__init__.py
файл, используя что-то вроде:
def my_predicate(info, request):
if request.something:
return True
return False
def main(global_config, **settings):
...
config.add_route_predicate('my_predicate_name', my_predicate)
config.add_route('my_route_name','/route_name/', 'my_predicate_name')
...
Но это не имеет никакого эффекта, я знаю, что с помощью 'my_predicate_name'
не хороший способ ... Я знаю, что я что-то не хватает, но я просто не могу получить то, что ...
EDIT
Если изменить мой код:
config.add_route('my_route_name','/route_name/', my_predicate_name=True)
Затем Pyramid выдает следующее сообщение об ошибке:
NameError: global name 'my_predicate_name' is not defined
Похоже, что add_route_predicate
не имеет никакого эффекта ...
Обратите внимание, что ваш последний фрагмент кода не является действительным Python ... Во всяком случае, это должно быть 'config.add_route ('my_route_name', '/ ROUTE_NAME /', my_predicate_name = True)' – Sergey
... К сожалению Это была опечатка, я обновил свой вопрос – kalbermattenm