更改request.GET QueryDict值

Anu*_*rma 6 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
Run Code Online (Sandbox Code Playgroud)

我明白了

<QueryDict: {}> as my output
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ony 12

您不能根据文档更改request.GET或者request.POST因为它们QueryDict是不可变的实例:

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


Eer*_*ist 10

如果您添加一小步,您的代码应该可以工作:您现在正在制作 的副本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)
Run Code Online (Sandbox Code Playgroud)

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