Django ढांचे में फॉर्म फ़ील्ड से मूल्य कैसे प्राप्त करें?


104

मुझे django फ्रेमवर्क में फ़ॉर्म फ़ील्ड से मान कैसे मिलते हैं? मैं इसे विचारों में नहीं, टेम्प्लेट में करना चाहता हूं ...

जवाबों:


129

किसी दृश्य में किसी प्रपत्र का उपयोग करना उसे बहुत समझाता है।

किसी दृश्य में फ़ॉर्म को संसाधित करने का मानक पैटर्न इस तरह दिखता है:

def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...

            print form.cleaned_data['my_form_field_name']

            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = ContactForm() # An unbound form

    return render_to_response('contact.html', {
        'form': form,
    })

उस बंधे हुए रूप का उदाहरण:class ContactForm(forms.Form): my_form_field_name = forms.CharField()
बॉब स्टीन

जब फ़ील्ड वास्तव में form.data या form.cleaned_data में होते हैं, तो कोई टेम्प्लेट {{form.name_of_field}} क्यों चला सकता है?
user3245268

56

अपना चयन ले लो:

def my_view(request):

    if request.method == 'POST':
        print request.POST.get('my_field')

        form = MyForm(request.POST)

        print form['my_field'].value()
        print form.data['my_field']

        if form.is_valid():

            print form.cleaned_data['my_field']
            print form.instance.my_field

            form.save()
            print form.instance.id  # now this one can access id/pk

नोट: यह उपलब्ध होते ही फ़ील्ड एक्सेस हो जाती है।


4
यह उत्तर सभी विकल्पों को संक्षेप में प्रस्तुत करता है - कच्चे POST डेटा तक पहुँच प्राप्त करना, बिना फॉर्म वाले फ़ील्ड और अंत में वेरिफाइड फॉर्म फ़ील्ड।
सर्ज मेरालियाकोव

2
हो सकता है कि मैं आज ही अपनी स्क्रीन को देख रहा हूं, लेकिन form['my_field'].value()पीएसटी अनुरोध पर फॉर्म वैल्यू तक पहुंचने के लिए यह बहुत ही सरल उपाय खोजने में मुझे एक घंटे का समय लगा । कुछ दिन: |
आइआलकेमिस्ट

28

अपने डेटा को मान्य करने के बाद आप ऐसा कर सकते हैं।

if myform.is_valid():
  data = myform.cleaned_data
  field = data['field']

इसके अलावा, django डॉक्स पढ़ें। वे निपुण हैं।


13
क्या आप अपने डेटा को साफ करने के बारे में b4?
राबर्ट जॉनस्टोन

2
इससे पहले कि आप अपना डेटा साफ़ करें, केवल अनुरोध है। प्रपत्र को उदाहरण के साथ संग्रहीत किया जाता है। सफाई वह है जो प्रपत्र फ़ील्ड के साथ POST डेटा को जोड़ती है। सफाई से पहले आपको request.POST के साथ काम करना होगा।
फ़्रीब

यदि प्रारंभिक सेट किया गया है तो क्या फ़ॉर्मफ़िल्ड का मूल्य प्राप्त करना संभव है?
फिडो

8

प्रपत्र से डेटा पुनर्प्राप्त करने के लिए जो पोस्ट अनुरोध भेजते हैं आप इसे इस तरह से कर सकते हैं

def login_view(request):
    if(request.POST):
        login_data = request.POST.dict()
        username = login_data.get("username")
        password = login_data.get("password")
        user_type = login_data.get("user_type")
        print(user_type, username, password)
        return HttpResponse("This is a post request")
    else:
        return render(request, "base.html")

7

मैं django 1.7+ और python 2.7+ का उपयोग करता हूं, खुराक से ऊपर का समाधान काम नहीं करता है। और फॉर्म में इनपुट मूल्य नीचे के रूप में उपयोग पीओएसटी प्राप्त किया जा सकता है (ऊपर समान रूप का उपयोग करें):

if form.is_valid():
  data = request.POST.get('my_form_field_name')
  print data

उम्मीद है की यह मदद करेगा।

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