表单对象没有属性“cleaned_data”
Posted
技术标签:
【中文标题】表单对象没有属性“cleaned_data”【英文标题】:form object has no attribute 'cleaned_data' 【发布时间】:2011-12-26 19:32:32 【问题描述】:我正在尝试使用 django 文档生成表单。我不断收到错误:
'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>
【问题讨论】:
【参考方案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() 函数,然后不使用它返回的内容。以上是关于表单对象没有属性“cleaned_data”的主要内容,如果未能解决你的问题,请参考以下文章
图像在request.POST中发送,但在form.cleaned_data中清理