开发者

Django HttpRequest problem

I'm trying to gat the value of a form field in django, now

xxx = request.POST[u'a1']

gives me a value, but

xxx = request.POST.get(u'a1')

gives me nothing

what am I doing wrong?

Update:

Using the first method, request.method = POST, using the second method changes it to GET,

all I开发者_StackOverflow am doing is replacing one line of code.

Ingmar, yes this does return true.

Shawn, first method produces DEBUG:root:[(u'a1', u'A1_6')],

second method produces DEBUG:root:[]


The get method takes two parameters: key and a return value for where there's no match for the key (defaults to None).
Maybe the first example worked only in cases where the form had a value in the field 'a1'.
Either set a return value for the get method (e.g. xxx = request.POST.get(u'a1', 'something')) or check in advance whether you have that field in the form (if u'a1' in request.POST ...)


A bit confusing question, but the way I understand you, you have a request that at one point contains a QueryDict with data in request.POST, but at a later point in the code cointains an empty QueryDict: {} in request.POST, and you are looking for the reason why and where the data disappears.

The Django docs say the QueryDict in HttpRequest is immutable, and cannot be changed. So you probably shouldn't be looking for code changing the value of the request.POST QueryDict, but some code that replaces the whole request.POST QueryDict with another one.

My guess is that you are assigning the value 'GET' to request.method at some point in the code, since you say that in function number two, request.method is changed to GET

When tinkering with a response of the type PUT some time ago I discovered that django actually applies logic to the HttpResponse object if response.method is changed, resulting in a changed request.POST QueryDict.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜