Python Django代码只在调试中工作
我对这个很困惑。py中的代码可以工作,但只有在我使用Pycharm进行调试时才能工作。如果我只是执行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
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>
异常值:
'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
...