Django代码仅适用于调试

时间:2011-04-12 11:16:52

标签: python django debugging

对此非常困惑。 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>&#39;PostForm&#39; object has no attribute &#39;cleaned_data&#39;</pre></td>

没有属性cleaning_data?但为什么......?

2 个答案:

答案 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
    ...