2011-03-08 7 views
4

얼마 전, 나는이 'application/x-www-form-urlencoded에지도 name: value을 인코딩 할 때, 그것은 그런 일 (여기에 내가 파이썬을 사용) 렌더링 것을 발견했다 :'application/x-www-form-urlencoded'의 표준은 무엇이며 값이 비어 있습니까?

>>> from urllib import urlencode 
>>> urlencode({'hello': '', 'blabla': 'hihi'}) 
'blabla=hihi&hello=' 

하지만 (적어도 파이썬) 구문 분석을, 단지 스트립 쌍이 비어있는 값 :

>>> from urlparse import parse_qs 
>>> parse_qs('blabla=hihi&hello=') 
{'blabla': ['hihi']} 

그래서 ... 표준 행동인가요? www-form-urlencoded을 구문 분석하는 방법에 대한 참조는 어디에서 찾을 수 있습니까? 내가 잠시 봤 거든, uris에 대한 RFC, 양식에 대한 W3c 문서를 찾았지만 빈 값을 어떻게 처리해야하는지에 대해서는 아무것도 알지 못했습니다. 누군가 내게 그것에 포인터를 줄 수 있습니까 ???

답변

4

내가 아는 한, 이에 대한 "표준"이 없습니다. 설명 된 유일한 것은 (html 스펙에서 알아 낸 바대로) 브라우저가 양식 데이터를 인코딩하는 방법입니다. 빈 값을 사용하여 수행하려는 (또는 수행하지 않는) 것은 귀하에게 달려 있습니다.

urlparse.parse_qs()는 선택 당신이 사람들을 처리하는 방법을 제어 할 수 있도록 매개 변수, keep_blank_values 가지고

참고 : 답변

>>> from urlparse import parse_qs 
>>> parse_qs('blabla=hihi&hello=', keep_blank_values=True) 
{'blabla': ['hihi'], 'hello': ['']} 
+0

감사합니다! 나는이 "keep_blank_values"kwarg을 몰랐다. 혹시라도 장고에 대한 설정이 있다면 알 수 있습니까? – sebpiq

+0

Doestn't Django는 이미'request.GET'과'request.POST'에 대해 그렇게합니다. – Steven

+0

@Steven : 음 ... 나는 그렇게 믿지 않는다. 그러나 나는 틀릴 수도있다 ... 꽤 확신하지는 않지만 ... – sebpiq

관련 문제