我有一个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 "**************"
我做错了什么?
答案 0 :(得分:1)
headers
是(key, value)
对的序列:
headers = [("MyVariable", "MyValue")]
这使您可以多次指定标题。另请参阅Response documentation,headers
关键字作为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中。