Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django HttpRequest问题_Python_Django - Fatal编程技术网

Python Django HttpRequest问题

Python Django HttpRequest问题,python,django,Python,Django,我现在正试图在django中获取表单字段的值 xxx = request.POST[u'a1'] 给了我一个价值,但是 xxx = request.POST.get(u'a1') 什么也没给我 我做错了什么 更新: 使用第一种方法request.method=POST, 使用第二种方法将其更改为 我所做的就是替换一行代码 英格玛,是的,这是真的 Shawn,第一个方法生成DEBUG:root:[(u'a1',u'a1_6') 第二个方法生成DEBUG:root:[]get方法接受两个参数:k

我现在正试图在django中获取表单字段的值

xxx = request.POST[u'a1']
给了我一个价值,但是

xxx = request.POST.get(u'a1')
什么也没给我

我做错了什么

更新:

使用第一种方法request.method=POST, 使用第二种方法将其更改为

我所做的就是替换一行代码

英格玛,是的,这是真的

Shawn,第一个方法生成DEBUG:root:[(u'a1',u'a1_6')

第二个方法生成DEBUG:root:[]

get方法接受两个参数:key和一个返回值,用于不匹配key的地方(默认为None)。
可能第一个示例仅适用于表单字段“a1”中有值的情况。

要么为get方法设置一个返回值(例如,
xxx=request.POST.get(u'a1',something')
),要么提前检查表单中是否有该字段(
如果request.POST中有u'a1…

有点让人困惑,但我理解你的方式,您有一个请求,该请求在某一点上包含一个QueryDict,其数据位于request.POST中,但在代码的稍后点上,它在request.POST中包含一个空QueryDict:{},您正在查找数据消失的原因和位置

假设HttpRequest中的QueryDict是不可变的,不能更改。因此,您可能不应该寻找更改request.POST QueryDict值的代码,而应该寻找用另一个代码替换整个request.POST QueryDict的代码

我猜您是在代码中的某个点将值'GET'分配给request.method,因为您说在函数2中,request.method更改为GET


在修补前一段时间放置的类型的响应时,我发现如果response.method发生更改,django实际上会将逻辑应用于HttpResponse对象,从而导致request.POST QueryDict发生更改

谢谢,对于第一个方法(arrival1=request.POST[u'a1'])调试状态:debug:root:debug:root:arrival1:a14第二个方法(arrival1=request.POST.get(u'a1','')生成debug:root:arrival1:似乎第二个方法出于某种原因正在清除字典。这很奇怪。通过
request.POST.items()
你能得到什么?非常奇怪。你是不是在某个偶然的地方覆盖了你的请求或帖子?否则的话,看起来确实有些东西坏了。测试您的querydict是否正常工作:
from django.http导入querydict;q=QueryDict(“a=1&b=2”);q['a']==q.get('a')
应输出
True