【问题标题】:Pyramid routing to class methods金字塔路由到类方法
【发布时间】:2020-10-03 16:30:10
【问题描述】:

pyramid documentation 来看,配置器的add_view 上存在一个attr 参数,它指出:

attr 值允许您改变使用的方法属性 以获得响应。例如,如果您的视图是 类,并且该类有一个名为 index 的方法,而你 想用这个方法代替类'__call__ 方法来返回响应,你会说 attr="index" 在 视图的视图配置。

考虑到这一点,我想将/myrequest 下的所有请求路由到MyRequest 类。给定以下类:

@view_defaults(renderer='json')
class MyHandler(object):
    def __init__(self, request):
        self.request = request

    def start(self):
        return {'success': True}

    def end(self):
        return {'success': True}

看起来这样做的方法是在配置中,添加这些行:

config.add_view(MyHandler, '/myrequest', attr='start')
config.add_view(MyHandler, '/myrequest', attr='end')

等等,对于我想在 MyHandler 下路由的所有方法。不幸的是,这不起作用。这样做的正确方法似乎是:

config.add_route('myroutestart', '/myroute/start')
config.add_route('myrouteend', '/myroute/end')
config.add_view(MyHandler, attr='start', route_name='myroutestart')
config.add_view(MyHandler, attr='end', route_name='myrouteend')

这似乎是一个非常多的样板文件。有没有办法把这个减少到每条路线 1 行?或者更理想的是,每个 class 1 行?

【问题讨论】:

    标签: pyramid


    【解决方案1】:

    The Pyramid Community Cookbook v0.2 中的 Route and View Examples 中的示例 #4,Pyramid for Pylons 用户提供以下内容。

    # Pyramid
    config.add_route("help", "/help/{action}")
    
    @view_config(route_name="help", match_param="action=help", ...)
    def help(self):   # In some arbitrary class.
        ...
    

    虽然这个食谱提到了 pyramid_handlers 作为一种选择,但 Pyramid 的维护者之一的文章 "Outgrowing Pyramid Handlers" 鼓励使用 Pyramid 的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多