gpt4 book ai didi

python - 您如何拥有不同的 View 来为 Pyramid 中的不同内容类型提供服务?

转载 作者:行者123 更新时间:2023-11-28 19:49:23 25 4
gpt4 key购买 nike

文档似乎表明您可以为此使用“接受”view_config 参数,如下所示:

@view_config(
route_name='data',
request_method='POST',
accept='application/json',
renderer='json',
)
def json_post_view(self):
...

@view_config(
route_name='data',
request_method='POST',
renderer='blah:templates/data.mako',
)
def form_post_view(self):
...

但是,实际上使用 wget 来发布到 url,就像这样:

wget -q -O - --post-file=data.json http://localhost:6543/data

或:

wget -q -O - --post-file=data.json --header="Content-type: application/json" http://localhost:6543/data

或使用浏览器发布到 url...

所有 结果相同;调用 json_post_view() View 。

我在这里做错了什么? accept 参数似乎根本没有做任何事情。

最佳答案

您想要使用谓词来分派(dispatch)到不同的 View ,正如您所做的那样。但是,accept 用于 Accept header ,该 header 用于形成您的响应。传入数据位于 Content-Type header 中, Pyramid 没有为其提供默认谓词。不过,您可以轻松编写自己的代码。

class ContentTypePredicate(object):
def __init__(self, val, config):
self.val = val

def text(self):
return 'content type = %s' % self.val
phash = text

def __call__(self, context, request):
return request.content_type == self.val

config.add_view_predicate('content_type', ContentTypePredicate)

@view_config(content_type='application/json')
# ...

关于python - 您如何拥有不同的 View 来为 Pyramid 中的不同内容类型提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com