2014-10-06 17 views
5

मैं फ्लास्क का उपयोग कर एक वेबसाइट बना रहा हूं, और एक पृष्ठ पर मुझे दो रूप हैं। यदि कोई पोस्ट है, तो मुझे यह तय करने की आवश्यकता है कि कौन सा फॉर्म पोस्ट किया जा रहा है। मैं निश्चित रूप से उन क्षेत्रों से कटौती कर सकता हूं जो request.form में मौजूद हैं, लेकिन मैं प्रस्तुत किए गए फॉर्म के नाम (<form name="my_form"> द्वारा परिभाषित) प्राप्त करके इसे स्पष्ट कर दूंगा। मैंने कई चीजों की कोशिश की, जैसे:फ्लास्क में सबमिट किए गए फॉर्म का नाम कैसे प्राप्त करें?

@app.route('/myforms', methods=['GET', 'POST']) 
def myForms(): 
    if request.method == 'POST': 
     print request.form.name 
     print request.form.['name'] 

लेकिन दुर्भाग्य से, कुछ भी काम नहीं करता है। क्या कोई जानता है कि मुझे सबमिट किए गए फॉर्म का नाम कहां मिल सकता है? सभी सुझावों का स्वागत है!

उत्तर

11

कोई 'फॉर्म का नाम' नहीं है। वह जानकारी ब्राउज़र द्वारा नहीं भेजी जाती है; name<form> टैग पर विशेषता का उपयोग पूरी तरह से ब्राउज़र पक्ष पर किया जाना है (और बूट करने के लिए बहिष्कृत, इसके बजाय id का उपयोग करें)।

आप एक छिपी हुई फ़ील्ड का उपयोग करके जानकारी है, लेकिन सबसे आम तरीका एक ही रूप हैंडलर के रूपों पोस्टिंग के बीच अंतर करना है कि जोड़ सकते हैं सबमिट बटन पर एक नाम देने के लिए:

<submit name="form1" value="Submit!"/> 

और

if 'form1' in request.form: 

लेकिन आप फ़ॉर्म के बीच अंतर करने के साधनों को शामिल करने के लिए <input type="hidden"> फ़ील्ड का भी उपयोग कर सकते हैं।

+0

धन्यवाद! यह वास्तव में मेरी समस्या हल करता है! मुझे कभी नहीं पता था कि ब्राउज़र द्वारा नहीं भेजा गया था। एक आखिरी सवाल: "बूट करने के लिए बहिष्कृत" के साथ आपका क्या मतलब है? – kramer65

+0

@ kramer65: 'name' विशेषता को HTML 4 में बहिष्कृत कर दिया गया है, इसलिए न केवल आपके उपयोग के मामले के लिए उपयोगी है, यह एक विशेषता भी नहीं है जिसका आपको अब उपयोग करना चाहिए। –

+0

आह, कमाल। मैंने नब्बे के दशक में एचटीएमएल सीखा, जिसके बाद मैंने मुख्य रूप से बैकएंड सिस्टम में वर्षों से काम किया। तो मेरे एचटीएमएल कौशल थोड़ा दिनांकित हैं ..;) धन्यवाद दस लाख! – kramer65

संबंधित मुद्दे