使用金字塔在HTTPFound()中添加http标头

时间:2015-01-12 14:02:36

标签: http-headers pyramid

我有一个Pyramid应用程序,我有以下代码行:

return HTTPFound(location=request.route_url('feeds'))

但是我想在标题中传递一个额外的参数。我试着用这个:

headers = {"MyVariable": "MyValue"}
return HTTPFound(location=request.route_url('feeds'),headers=headers)

然而,#34; feed"的view_config在标题中没有得到MyVariable。我用以下代码检查它:

print "**************"
for key in request.headers.keys():
   print key
print "**************"

我做错了什么?

2 个答案:

答案 0 :(得分:1)

headers(key, value)对的序列

headers = [("MyVariable", "MyValue")]

这使您可以多次指定标题。另请参阅Response documentationheaders关键字作为headerlist传递给生成的Response object。另请参阅HTTP Exceptions documentation

  

headers:   (k,v)标题对的列表

但是,标题只会发送给客户端;它们由客户端传递给他们被指示进行的下一个请求。如果您需要将信息传递到重定向目标,或者在cookie或会话中设置值,请使用GET查询参数。

要添加查询参数,请为_query指定route_url()目录:

params = {"MyVariable": "MyValue"}
return HTTPFound(location=request.route_url('feeds', _query=params))

并在request.GET中查找这些查询参数:

for key in request.GET:
    print key, request.GET.getall(key)

答案 1 :(得分:0)

由于HTTP的工作方式,您所要求的是不可能的。您可以使用GET参数传递数据,也可以将数据存储在cookie中。