2011-11-11 22 views
10

Tôi đang cố gắng tạo biểu mẫu bằng tài liệu django. Tôi liên tục nhận được lỗi:đối tượng biểu mẫu không có thuộc tính 'cleaned_data'

'TestForm' object has no attribute 'cleaned_data' 

mặc dù form.is_validTrue (nó in ra 'hình thức có giá trị' dòng mã của tôi). Sau đây là các phần liên quan của mã của tôi.

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> 

Trả lời

32

Bạn không kích hoạt làm sạch và xác nhận của các hình thức, điều này được thực hiện bằng cách gọi is_valid() phương pháp (chú ý dấu ngoặc ()), đó là lý do tại sao bạn không có dữ liệu làm sạch.

Correction:

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

, Cảm ơn u cho bài viết của bạn, tôi sửa chữa nó để is_valid(), bây giờ nếu form.is_valid là False, nó đi vào đến phần khác của mã này. – Jisson

+0

+1 để bắt(). Tôi đã có cùng một vấn đề và phần khó khăn là nó làm việc nếu tôi thiết lập một điểm break và bước qua mã, nhưng sẽ không làm việc khác. Đoán trình gỡ lỗi buộc đối tượng biểu mẫu phải điền đầy đủ ngay cả khi không có lệnh gọi is_valid(). – IMFletcher

+0

Đây là một hệ thống kỳ quặc. Tôi muốn sử dụng dữ liệu được làm sạch, nhưng sử dụng xác nhận của riêng tôi (vì nó yêu cầu xác nhận hợp lệ), vì vậy tôi phải gọi hàm is_valid() và sau đó không sử dụng nó trả về. – Deleet