Python Django代码只在调试中工作

Python Django代码只在调试中工作,python,django,debugging,Python,Django,Debugging,我对这个很困惑。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" p

我对这个很困惑。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>
异常值:
'PostForm';对象没有属性';清理数据';

没有属性数据?但是为什么…?

在表单上调用
is valid()
后,
cleaned\u data
属性变为可用。您应该将
cd=form.cleaned_data
移动到
下方,如果

Django表单的cleaned_data属性在您调用表单上的
is\u valid()
之前无法访问


不知道!它应该引起一个例外。也许Pycharm的调试过程中发生了一些事情,比如在变量监视器/“watch”中调用is_valid()?(顺便说一句,如果这解决了你的问题,请将我的回答标记为“接受”)哇!我也有同样的问题!这很疯狂,但代码只适用于调试:/
form = PostForm(request.POST)

if form.is_valid():
    cd = form.cleaned_data
    ...