首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyramid_handlers不工作

pyramid_handlers不工作
EN

Stack Overflow用户
提问于 2011-09-28 19:02:26
回答 1查看 268关注 0票数 0

我现在正在把一个项目从塔架1.0移到金字塔。

到目前为止,我的问题是如何在金字塔中使用restful路径。我目前正在使用pyramid_handlers,因为这似乎是一个好的开端。我在用阿赫特。

在我的路线中,有两条重要的路线:

代码语言:javascript
复制
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")

我的行动:

代码语言:javascript
复制
@action(name="new_account", renderer='accounts/new.mako', request_method='GET')

错误:

代码语言:javascript
复制
 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="..."不起作用。金字塔本身找不到函数,如果定义了函数名,它就无法执行action语句。

不知道我做错了什么。

正确的方法。

代码语言:javascript
复制
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts", action="new_account")

编辑

route_name可能会被url生成器函数使用。而action是@action中的实际名称。据我所知,@action名称是route_name,而不是操作名。现在更有意义了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-30 08:52:28

add_handler的调用需要一个动作模式。因此,这要么将{action}添加到url模式,要么将action=设置为参数。这些操作必须与@action装饰器中定义的名称匹配。在您的示例中,您将操作命名为new_account,但是使用new操作调用了add_handler。因此,它们之间没有适当的联系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7588190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档