我想在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对象
答案 0 :(得分:12)
您无法更改request.GET
或request.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)
我已经在编写自定义中间件时对其进行了测试,但我认为它在所有地方都以相同的方式工作。