现在,我正在尝试获取django中表单字段的值
xxx = request.POST[u'a1']给了我一个价值,但是
xxx = request.POST.get(u'a1')什么也没有给我
我做错了什么?
更新:
使用第一个方法request.method = POST,使用第二个方法将其更改为GET,
我所要做的就是替换一行代码。
Ingmar,是的,这确实返回true。
Shawn,第一个方法产生DEBUG:root:(u'a1',u'A1_6'),
第二种方法生成DEBUG:root:[]
发布于 2011-08-26 06:08:11
get方法有两个参数: key和一个返回值,表示没有匹配key的地方(缺省为None)。
也许第一个例子只有在表单的字段'a1‘中有一个值的情况下才有效。
或者为get方法设置返回值(例如xxx = request.POST.get(u'a1', 'something')),或者提前检查表单中是否有该字段(if u'a1' in request.POST ...)
发布于 2011-09-08 02:56:36
这是一个有点令人困惑的问题,但据我对您的理解,您有一个请求,该请求一度包含一个包含request.POST格式数据的QueryDict,但在稍后的代码中,它在request.POST中包含一个空的QueryDict:{},并且您要查找数据消失的原因和位置。
Django docs说HttpRequest中的QueryDict是不可变的,并且不能更改。因此,您可能不应该寻找更改request.POST QueryDict的值的代码,而应该寻找用另一个request.POST QueryDict替换整个request.POST QueryDict的代码。
我的猜测是,您在代码中的某个时刻将值' GET‘赋给了request.method,因为您说在第二个函数中,request.method被更改为GET
在修改一段时间前PUT类型的响应时,我发现如果response.method发生变化,django实际上会将逻辑应用于HttpResponse对象,从而导致request.POST QueryDict发生变化。
https://stackoverflow.com/questions/7197534
复制相似问题