更改request.GET QueryDict值

时间:2013-10-08 11:56:36

标签: python django django-templates

我想在django中更改request.GET querydict对象。我尝试了这个,但我所做的改变没有反映出来。我试过这个

tempdict = self.request.GET.copy() # Empty initially
tempdict['state'] = ['XYZ',]
tempdict['ajaxtype'] = ['facet',]
print self.request.GET

我得到了

<QueryDict: {}> as my output

是否可以在django中更改request.GET querydict对象

2 个答案:

答案 0 :(得分:12)

您无法更改request.GETrequest.POST,因为它们是QueryDict immutable according to the docs的实例:

  

QueryDict实例是不可变的,除非您创建它们的副本()。这意味着您无法直接更改request.POST和request.GET的属性。

答案 1 :(得分:1)

如果您添加一个小步骤,您的代码应该可以工作:您现在正在制作 request.GET 的副本,但您尚未将其分配回 request。所以它只是一个独立的对象,与 request 没有任何关系。

这将是必要的改进:

tempdict = self.request.GET.copy()
tempdict['state'] = ['XYZ',]
tempdict['ajaxtype'] = ['facet',]
self.request.GET = tempdict  # this is the added line
print(self.request.GET)

我已经在编写自定义中间件时对其进行了测试,但我认为它在所有地方都以相同的方式工作。

相关问题