对此非常困惑。 views.py中的此代码可以工作,但只有在我使用Pycharm进行调试时才有效。如果我只是做runserver
,我会收到500错误。
views.py:
def add_post(request):
if request.method == 'POST':
form = PostForm(request.POST)
cd = form.cleaned_data
if form.is_valid():
print "valid"
post = Post(nickname=cd['nickname'], body=cd['body'], category=cd['category'])
post.save()
return HttpResponse("success")
return HttpResponseServerError("fail")
Chrome Inspector中显示错误
<th>Exception Value:</th>
<td><pre>'PostForm' object has no attribute 'cleaned_data'</pre></td>
没有属性cleaning_data?但为什么......?
答案 0 :(得分:3)
在表单上调用cleaned_data
后,is_valid()
属性变为可用。您应该将cd = form.cleaned_data
移至if
以下。
答案 1 :(得分:0)
在您在表单上调用is_valid()
之前,无法访问Django表单的cleaning_data属性。
form = PostForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
...