问题描述
我添加了以下路线:
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
添加参数。