Python金字塔可选的URL段

问题描述

添加了以下路线:

config.add_route('api.v3.crud','api/v3/crud/{entity_type}')
config.add_route('api.v3.crud:id','api/v3/crud/{entity_type}/{id}')

并定义以下认值和配置:

@view_defaults(route_name="api.v3.crud",permission="authenticated",renderer="json")
@view_defaults(route_name="api.v3.crud:id")
class CrudView(object):

    def __init__(self,request):
        self.request = request
        log.debug(request.method)

    @view_config(request_method='GET')
    def get(self):
        # etc...

我认为可以通过这种方式定义“可选的” URL段,以便可以在同一类中实现RESTful API端点。 “列表”调用有效(api/v3/crud/users,但是对api/v3/crud/users/id调用会抛出NotFound。我在做什么错了?

解决方法

view_defaults不会像您认为的那样堆叠。您只应为一个类定义一次view_defaults,然后它将为该类中定义的每个view_config添加参数。