【问题标题】:form object has no attribute 'cleaned_data'表单对象没有属性“cleaned_data”
【发布时间】:2011-12-26 19:32:32
【问题描述】:

我正在尝试使用 django 文档生成表单。我不断收到错误:

'TestForm' object has no attribute 'cleaned_data'

即使 form.is_validTrue(它会打印我的代码的“表单有效”行)。以下是我的代码的相关部分。

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>

【问题讨论】:

    标签: python django-forms django-templates django-views


    【解决方案1】:

    您没有触发表单的清理和验证,这是通过调用is_valid() 方法完成的(注意括号 () ),这就是您没有清理数据的原因。

    更正:

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

    【讨论】:

    • ,感谢您的帖子,我已将其更正为 is_valid(),现在如果 form.is_valid 为 False,则进入代码的 else 部分。
    • +1 表示 () 捕获。我有同样的问题,棘手的部分是,如果我设置一个断点并单步执行代码,它会起作用,但否则就不会起作用。即使没有 is_valid() 调用,猜测调试器也会强制表单对象完全填充。
    • 这是一个奇怪的系统。我想使用清理后的数据,但使用我自己的验证(因为它需要条件验证),所以我不得不调用 is_valid() 函数,然后不使用它返回的内容。
    猜你喜欢
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多