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

lla*_*aro 4 python authentication json 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)
Run Code Online (Sandbox Code Playgroud)

但是我的js正在等待回复{成功:正确,消息:'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'}
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ers 11

您可以直接在响应上设置该信息,如"金字塔手册" 的"呈现的响应变化属性"部分所述:

@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'}
Run Code Online (Sandbox Code Playgroud)