我在我的一個金字塔應用程序中使用了一些自定義謂詞。由於金字塔版本1.5,啓動應用程序時,會顯示以下信息:金字塔中的自定義路由謂詞
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.
我想用新的方法......但我無法找到該怎麼做一個忠告...
我試圖定義我自謂我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'
不是好辦法......我知道我失去了一些東西,但我不能得到什麼......
編輯
如果我改變我的代碼:
config.add_route('my_route_name','/route_name/', my_predicate_name=True)
然後金字塔引發以下錯誤:
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