2012-05-15 18 views
11

मेरे पास एक Django प्रोजेक्ट है कि, एक पृष्ठ पर, कई रूपों (विभिन्न टैग्स में) होते हैं जिन्हें अलग-अलग प्रभाव पड़ने के लिए सबमिट किया जा सकता है। सभी मामलों में मैं चाहता हूं कि उपयोगकर्ता को उसी पृष्ठ पर रीडायरेक्ट किया जाए, इसलिए मैं फॉर्म को सबमिट करने और फिर मूल पृष्ठ पर रीडायरेक्ट करने के पैटर्न में अपने विचार में उपयोग करता हूं। कम से कम एक मामले में, दो रूपों के बीच एकमात्र अंतर सबमिट बटन का मान है।मैं Django में सबमिट सबमिट बटन मान कैसे प्राप्त कर सकता हूं?

if request.POST['submit']=='Add': 
    #code to deal with the "Add" form 

और टेम्पलेट में, प्रथम रूप है की तरह एक सबमिट बटन

<input type="submit" value="Add"> 
:

मेरी नजर में मैं कोड (जो पहली बार मेरे विचार समारोह request.POST तक पहुँचता है)

मुझे लगा कि यह काम करेगा, लेकिन जब मैं कि फ़ॉर्म सबमिट करेंगे, मैं ऊपर से देखने में लाइन में कोई त्रुटि मिलती है:

कुंजी 'प्रस्तुत' <QueryDict: {u'clientyear': [u'2012'], u'csrfmiddlewaretoken': [u'be1f2f051f09f6ab0375fdf76cf6a4d7'], u'ben': [u'123405']}>

जाहिर में नहीं मिला, यह मान सबमिट बटन क्लिक किया मैं करने के लिए इसी के साथ एक 'submit' कुंजी या किसी कुंजी नहीं है। इसलिए, चूंकि यह काम नहीं करता है, सबमिट बटन के मूल्य तक कैसे पहुंच सकता है या बता सकता है कि कौन से फॉर्म सबमिट किए गए हैं?

उत्तर

22

Submit एक HTML फार्म संरचना है ... इस प्रकार आप प्रपत्र वस्तुओं के नाम विशेषता का उपयोग करना चाहिए ... अपने टेम्पलेट में:

<form> 
... 
<input type="submit" name="list" value="List Objects" /> 
</form> 
<form> 
... 
<input type="submit" name="do-something-else" value="Do Something Else" /> 
</form> 

आपके विचार में:

if 'list' in request.POST: 
    # do some listing... 
elif 'do-something-else' in request.POST: 
    # do something else 
+1

यह निर्भर करता है कि क्या विशिष्ट के लिए निर्धारित मूल्य है बटन सबमिट करें। यदि यह एक खाली स्ट्रिंग है, तो आपका समाधान काम नहीं करेगा (क्योंकि ''' ', एक खाली स्ट्रिंग का मूल्यांकन गलत है)। – Tadeck

+0

मैं * * * आयातक चीज़ दिखाने के लिए उपयोग करता हूं 'नाम' 'मूल्य' नहीं है ... अभी ठीक करना, धन्यवाद। – FallenAngel

+0

कोई समस्या नहीं है। लेकिन हो सकता है कि अनुरोध में 'request.POST.get ('list') ''' सूची 'के साथ 'request.POST.get (' list ')' को प्रतिस्थापित करना आसान तरीका है। POST'? – Tadeck

5

एक भ्रम को रोकने के लिए ध्यान में रखना। सबमिट बटन के name दिखाएंगे कि फ़ॉर्म में केवल एक ही बटन है या नहीं।

#template.html 
<form action="..." method="post"> 
<input type="submit" name = "first_button" value="Add"> 
</form> 

#view.py 
... 
'first_button' in request.POST #False 

#template.html 
<form action="..." method="post"> 
<input type="submit" name = "first_button" value="Add"> 
<input type="submit" name = "second_button" value="Remove"> 
</form> 

#view.py 
... 
'first_button' in request.POST #True if you clicked on that button 
संबंधित मुद्दे