request.POST.get ('sth') बनाम request.POST ['sth'] - अंतर?


84

दोनों के बीच क्या अंतर है

request.POST.get('sth')

तथा

request.POST['sth']

समान प्रश्न नहीं मिला, दोनों मेरे लिए समान काम करते हैं, मान लें कि मैं उन्हें अलग से उपयोग कर सकता हूं लेकिन शायद मैं गलत हूं, यही कारण है कि मैं पूछ रहा हूं। कोई विचार?

जवाबों:


195

request.POST['sth']KeyErrorयदि 'sth'नहीं है तो एक अपवाद बढ़ाएगा request.POST

request.POST.get('sth')में नहीं है Noneतो वापस आ जाएगा ।'sth'request.POST

इसके अतिरिक्त, .getआपको डिफ़ॉल्ट मान का एक अतिरिक्त पैरामीटर प्रदान करने की अनुमति देता है जो कुंजी को शब्दकोश में नहीं होने पर वापस कर दिया जाता है। उदाहरण के लिए,request.POST.get('sth', 'mydefaultvalue')

यह किसी भी अजगर शब्दकोश का व्यवहार है और इसके लिए विशिष्ट नहीं है request.POST



ये दो स्निपेट कार्यात्मक रूप से समान हैं:

पहला स्निपेट:

try:
    x = request.POST['sth']
except KeyError:
    x = None


दूसरा स्निपेट:

x = request.POST.get('sth')



ये दो स्निपेट कार्यात्मक रूप से समान हैं:

पहला स्निपेट:

try:
    x = request.POST['sth']
except KeyError:
    x = -1


दूसरा स्निपेट:

x = request.POST.get('sth', -1)



ये दो स्निपेट कार्यात्मक रूप से समान हैं:

पहला स्निपेट:

if 'sth' in request.POST:
    x = request.POST['sth']
else:
    x = -1


दूसरा स्निपेट:

x = request.POST.get('sth', -1)

13
+1। उल्लेख के लिए कि। अजगर अजगर शब्दकोशों के लिए डिफ़ॉल्ट व्यवहार है।
टॉमी स्ट्रैंड

1
"यह किसी भी अजगर शब्दकोश का व्यवहार है और अनुरोध के लिए विशिष्ट नहीं है ।POST" काश मैंने इस जवाब को अपने पहले दिन अजगर के साथ पढ़ा ... +1!
किकुसिन

0

सामान्य शब्दकोशों तक पहुंचने और इसे (।) के साथ एक्सेस करने में मुख्य अंतर यह है कि

कुछ का उपयोग करने के साथ request.POST['sth']एक महत्वपूर्ण त्रुटि उत्पन्न होगी यदि केट 'sth' मौजूद नहीं है। लेकिन get () मेथड डिस्क्रिप्शन का उपयोग करने से आपको बेहतर एरर हैंडलिंग भी मिलेगी

request.POST.get('sth')

कोई भी रिटर्न नहीं होगा कुंजी 'sth मौजूद नहीं है' और दूसरा पैरामीटर प्राप्त करने के लिए देकर () इसके साथ एक डिफ़ॉल्ट मान के रूप में वापस आ जाएगा।

data = request.POST.get('sth','my_default_value')

यदि 'sth' कुंजी मौजूद नहीं है, तो डेटा का मान होगा my_default_value। सामान्य शब्दकोशों तक पहुँच प्राप्त करने () पद्धति का उपयोग करने का यह लाभ है।


2
इस उत्तर में क्या प्रस्तुत किया गया है जो पहले से ही उच्चीकृत और स्वीकृत उत्तर में नहीं है?
स्टीफन राउच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.