使用json渲染器将标题添加到json响应中

时间:2013-02-17 20:21:56

标签: python json authentication pyramid

这是我用来向响应添加remeber标头的当前方式:

@view_config(route_name='login', renderer='json', request_method='POST')
def post_login(request):
   ...
   ... authentication logic
   ...
   headers = remeber(request, login)
   return HTTPFound(location=came_from, headers=headers)

但我的js正在等待回复{success:True,message:'auth OK'}。 HTTPFound将重定向到came_from。我想要js重定向

所以我试过这个

@view_config(route_name='login', renderer='json', request_method='POST')
def post_login(request):
   ...
   ... authentication logic
   ...
   return { 'successful': True, 'message': 'auth OK'}

但由于remeber标题永远不会添加到响应中,因此它永远不会在moooon的另一端进行身份验证。

所以我的问题是如何使用json渲染器添加这些记忆头?

1 个答案:

答案 0 :(得分:11)

您可以直接在响应中设置该信息,如金字塔手册的Vary Attributes of Rendered Responses section中所述:

@view_config(route_name='login', renderer='json', request_method='POST')
def post_login(request):
   ...
   ... authentication logic
   ...
   headers = remeber(request, login)
   request.response.headerlist.extend(headers)
   return { 'successful': True, 'message': 'auth OK'}