【问题标题】:Pyramid: How to config multiple methods of a class as different viewsPyramid:如何将一个类的多个方法配置为不同的视图
【发布时间】:2013-03-22 15:13:39
【问题描述】:

我只是想让它工作,但它没有:

class Test12:
    def __init__(self, request):
        self.request = request

    @view_config(route_name='test1')
    def test1(self):
        return Response('I am from test 1')

    @view_config(route_name='test2')
    def test2(self):
        return Response('Hi there from test2')


config.add_route('test1', '/test1')
config.add_route('test2', '/test2')

对于两个 URL /test1/test2 -- 返回由 test2() 方法返回的响应。我应该如何让它正常工作? (或者我在这里遗漏了什么?)

【问题讨论】:

  • SSCCE.org - 如果您能提供一个简短、完整的程序来演示您所看到的错误,将会有所帮助。
  • 我不需要。 Pyramid 程序员会很容易理解这一点。
  • @good_computer,为单个文件应用填写此模板:gist.github.com/thapar/5218205。人们在看到实时问题时会更愿意帮助您(即使是非 Pyramid 的人也可以更轻松地提供帮助)。您可以使用python single_file_app.py 从命令行运行它
  • 如果你不在 Python 3 上,那么至少要确保你的类继承自 object。除此之外,您粘贴的代码应该可以工作。
  • @MichaelMerickel 我在 Python 3 上,所以我不需要对象。上面的代码不起作用,可能是因为我有两条路由指向同一个类的方法——而且我想我们只有一个 attr 参数来指定要调用的类的方法。我就在这里?我认为一个类只能在路由名称上服务(尽管使用不同的谓词,您可以让该类的多个方法响应相同的路由名称)

标签: python pyramid


【解决方案1】:

最可能的问题是您的原始(而非粘贴)代码中存在缺陷,您不小心将这两个方法命名为相同的名称。

【讨论】:

  • 是的,你是对的。它运行。我会看看我做错了什么并在这里发布原因。同时,谢谢。
  • 我猜有一些 ACL/权限相关的故障或者可能是一些路由命名错误。但我还是不明白,attr 是干什么用的。只有当你把装饰器放在类而不是方法上时它才有用吗?
  • 是的。您可以在装饰类本身时使用attr,以避免它默认为__call__
猜你喜欢
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2010-11-13
  • 2021-05-12
  • 1970-01-01
相关资源
最近更新 更多