कुछ समय पहले, मैंने देखा था कि 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
को कैसे पार्स किया जाना चाहिए, इसका संदर्भ मुझे कहां मिल सकता है? मैंने थोड़ी देर के लिए गुगल किया है, यूरिस के लिए आरएफसी, फॉर्म के लिए डब्ल्यू 3 सी दस्तावेज़, और इसी तरह के बारे में कुछ भी नहीं है लेकिन खाली मूल्यों का इलाज कैसे किया जाना चाहिए। क्या कोई मुझे इसका सूचक दे सकता है ???
1 उत्तर
जहाँ तक मुझे पता है, इसके लिए कोई "मानक" नहीं है। केवल एक चीज जो वर्णित है (एचटीएमएल स्पेक में, जैसा कि आपको पता चला है), यह है कि ब्राउज़र को फॉर्म डेटा को कैसे एन्कोड करना चाहिए। आप खाली मूल्यों के साथ क्या करना चाहते हैं (या नहीं) आप पर निर्भर है।
ध्यान दें कि urlparse.parse_qs()
में एक वैकल्पिक पैरामीटर है, keep_blank_values
जो आपको यह नियंत्रित करने की अनुमति देता है कि इसे कैसे संभालना चाहिए:
>>> from urlparse import parse_qs
>>> parse_qs('blabla=hihi&hello=', keep_blank_values=True)
{'blabla': ['hihi'], 'hello': ['']}
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
request.GET
औरrequest.POST
के लिए ऐसा नहीं करता है?