django 之修改request.get或request.post提示:This QueryDict instance is immutable
示例:
from django.shortcuts import render
def login(request):
data=request.POST
data['name']='chenxinming'
return render(request,'login.html')
提示错误信息:
AttributeError: This QueryDict instance is immutable
解决办法:
查阅官方文档,发现QueryDict实例变成一个不可修改。
官方文档解释:
在正常的请求/响应周期中访问时,QueryDicts request.POST和request.GET将是不可变的。要获得可变版本,您需要使用QueryDict.copy()。
代码:
第一种解决方法:
from django.shortcuts import render
def login(request):
data=request.POST.copy()
data['name']='chenxinming'
return render(request,'login.html')
第二种解决方法:
from django.shortcuts import render
def login(request):
data=request.POST
# 记住旧的方式
_mutable = data._mutable
# 设置_mutable为True
data._mutable = True
# 改变你想改变的数据
data['name']='chenxinming'
# 恢复_mutable原来的属性
data._mutable = _mutable
return render(request,'login.html')
浙公网安备 33010602011771号