金字塔路由到类方法

问题描述 投票:0回答:1

来自 金字塔文件,存在一个 attr 配置器的参数 add_view 其中指出:

该决议规定: 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下为所有我想路由的方法添加这行: 不幸的是,这并不奏效。正确的方法似乎是:在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行?或者更理想的是,每个 阶层?

pyramid
1个回答
1
投票

例子#4在 路线和视图示例 来自Pyramid Community Cookbook v0.2,Pyramid for Pylons Users,提供了以下内容。

# 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的维护者之一鼓励使用Pyramid的配置。

© www.soinside.com 2019 - 2024. All rights reserved.