2012-09-23 15 views
39

मैं मैं डेटा RESTClient में भेज रहा हूं "personId" POST द्वारा कुप्पीकास्ट बोतल प्रपत्र मूल्य

@app.route('/getpersonbyid', methods = ['POST']) 
    def getPersonById(): 
     personId = (int)(request.form['personId']) 
     print personId 

में पोस्ट डेटा प्राप्त करने की कोशिश कर रहा हूँ int करने के लिए। लेकिन मुझे परिणाम नहीं मिल रहा है; मुझे इसके बजाय 400 खराब अनुरोध त्रुटि मिलती है।

क्या मेरे कोड में कोई त्रुटि है? यदि ऐसा है तो अनुरोध डेटा POST के माध्यम से विशिष्ट डेटा कैसे प्राप्त कर सकता है।

+1

'int' प्रकार के चारों ओर कोष्ठक रखने की आवश्यकता नहीं है; पाइथन नहीं करता है। :-) –

+0

और 'परिणाम न मिलने' से आपका मतलब है कि आपको कोई त्रुटि मिलती है? –

+0

मुझे एक त्रुटि मिली है बुरा अनुरोध –

उत्तर

45

आप personId मान वापस करना चाहते हैं; कंसोल के लिए उसे प्रिंट करके एक वेब अनुप्रयोग में मदद नहीं करेगा:

@app.route('/getpersonbyid', methods = ['POST']) 
def getPersonById(): 
    personId = int(request.form['personId']) 
    return str(personId) # back to a string to produce a proper response 

int आसपास कोष्ठक, अर्थहीन शोर कर रहे हैं btw, वे अजगर में आवश्यकता नहीं होती है और इस मामले पार्सर द्वारा नजरअंदाज कर दिया में हैं।

मुझे लगता है कि आप personId दृश्य में मूल्य के साथ सार्थक कुछ कर रहे हैं; अन्यथा मूल्य पर int() का उपयोग थोड़ा सा व्यर्थ है। यदि क्षेत्र के रूप में मौजूद नहीं है या नहीं किया जा सकता

personId = request.form.get('personId', type=int) 

अब personId एक पूर्णांक पर सेट हो जाएगा, याNone:

तुम भी MultiDict.get() method उपयोग कर सकते हैं मूल्य आप के लिए परिवर्तित करने के लिए एक पूर्णांक में परिवर्तित।

+0

मैंने 'int 'और अब इसके काम को हटा दिया। धन्यवाद! –

+0

@ अमृथा: ठीक है, जिस स्थिति में आपका 'व्यक्ति आईडी' मूल्य बिल्कुल int नहीं है; आपके लॉग आपको वह त्रुटि दिखाएंगे (कुछ 'ValueError') जैसा। –

+0

हाँ, त्रुटि है –