我目前正在将一个项目从 Pylons 1.0 转移到 Pyramid。
到目前为止,我的问题是如何在 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="..."
它不起作用。Pyramid 无法自行找到函数,如果定义了函数名称,则无法执行操作语句。
不知道我做错了什么。
正确的做法。
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts", action="new_account")
编辑
route_name
可能会被 url 生成器函数使用。而 action 是 @action 中的实际名称。据我了解,@action 名称是 route_name 而不是动作名称。这现在更有意义了。