我有一个金字塔网络服务,代码示例如下:
视图声明:
@view_config(route_name="services/Prices/GetByTicker/")
def GET(request):
ticker = request.GET('ticker')
startDate = request.GET('startDate')
endDate = request.GET('endDate')
period = request.GET('period')
路由:
config.add_route('services/Prices/GetByTicker/', 'services/Prices/GetByTicker/{ticker}/{startDate}/{endDate}/{period}')
现在我知道这一切都搞砸了,但我不知道金字塔的惯例是什么。目前这是可行的,因为请求被成功地路由到视图,但随后我得到一个“Dictionary object not callable”异常。
网址看起来很糟糕:
@root/services/Prices/GetByTicker/ticker=APPL/startDate=19981212/endDate=20121231/period=d
理想情况下,我希望能够使用如下URL:
@root/services/Prices/GetByTicker/?股票代码=APPL&startDate=19981212&endDate=20121231&period=d
任何金字塔的人都愿意花五分钟来解释我做错了什么?
查询字符串将转换为
request.GET
字典。您使用括号来调用字典,而不是通过括号访问项。对于url,例如如果希望多次提供
ticker
,则最后一个选项非常有用。request.params
是request.GET
和request.POST
的组合,后者是在表单上载中表示请求正文的字典。无论如何,答案是
request.GET('ticker')
语法上不是我提到的选项之一,停止这样做。:-)从您的示例代码中,我认为您使用了URL Dispatch
所以应该是这样
然后URL如下:
@根目录/服务/价格/GetByTicker/?ticker=APPL&startDate=19981212&endDate=20121231&period=d
会匹配的
--编辑--
您不必使用“services/Prices/GetByTicker”这样的名称作为路由名称,您可以使用
request.params['key']
视图声明:
路由:
相关问题 更多 >
编程相关推荐