2011-11-11 21 views
10

मैं django दस्तावेज़ीकरण का उपयोग कर एक फॉर्म उत्पन्न करने का प्रयास कर रहा हूं। मैं लगातार त्रुटि हो रही है:फॉर्म ऑब्जेक्ट में कोई विशेषता नहीं है 'cleaned_data'

'TestForm' object has no attribute 'cleaned_data' 

भी form.is_valid हालांकि है True (यह प्रिंट मेरी कोड की पंक्ति 'विधि मान्य')। मेरे कोड के प्रासंगिक भाग निम्नलिखित हैं।

urls.py

url(r'^test/',views.test), 

forms.py

from django import forms 
class TestForm(forms.Form): 
    name = forms.CharField() 

views.py

def test(request): 
    if request.method == 'POST': 
     form = TestForm(request.POST) 
     if form.is_valid: 
      print 'form is valid' 
      print form.cleaned_data      
     else: 
      print 'form not valid' 
    else: 
     form = TestForm() 

    return render_to_response('User/Test.html',{'form': form},context_instance=RequestContext(request)) 

test.html

<form action="" method="post">{% csrf_token %} 
     <table> 
      {{ form.as_table }} 
     </table> 
     <input type="submit" value="Submit"> 
    </form> 

उत्तर

32

आप सफाई और फार्म का सत्यापन ट्रिगर नहीं कर रहे, इस is_valid() विधि (कोष्ठकों () ध्यान दें), कि आप कोई साफ डेटा क्यों है है फोन करके किया जाता है।

सुधार:

if request.method == 'POST': 
    form = TestForm(request.POST) 
    if form.is_valid(): 
     print 'form is valid' 
     print form.cleaned_data 
    ... 
+0

, अपनी पोस्ट के लिए यू धन्यवाद, मैं इसे is_valid करने के लिए() सही है, अब अगर form.is_valid गलत है, यह कोड के बाकी हिस्से के लिए प्रवेश करती है।() पकड़ के लिए – Jisson

+0

+1। मेरे पास एक ही समस्या थी और मुश्किल हिस्सा यह है कि अगर मैंने ब्रेक पॉइंट सेट किया और कोड के माध्यम से कदम रखा, तो यह काम करता था, लेकिन अन्यथा काम नहीं करेगा। डीबगर का अनुमान लगाने से फॉर्म ऑब्जेक्ट को is_valid() कॉल के बिना भी पूरी तरह से पॉप्युलेट करने के लिए मजबूर होना पड़ा। – IMFletcher

+0

यह एक अजीब प्रणाली है। मैं साफ डेटा का उपयोग करना चाहता था, लेकिन अपनी खुद की सत्यापन का उपयोग करना (क्योंकि इसे सशर्त सत्यापन की आवश्यकता थी), इसलिए मुझे is_valid() फ़ंक्शन को कॉल करना पड़ा और फिर वह जो भी लौटाता है उसका उपयोग न करें। – Deleet

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

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