2011-04-12 68 views
1

对此很困惑。这个代码在views.py工程,但只有当我使用Pycharm进行调试时。如果我只是做runserver我得到一个500错误。Django代码只能用于调试

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检查

 <th>Exception Value:</th> 
    <td><pre>&#39;PostForm&#39; object has no attribute &#39;cleaned_data&#39;</pre></td> 

无属性cleaned_data见过?但为什么...?

回答

3

在窗体上调用is_valid()cleaned_data属性变为可用。您应该将cd = form.cleaned_data移至if以下。

+0

非常感谢。这很奇怪,为什么它会在调试中工作......? – rabbid 2011-04-12 11:21:00

+0

不知道!它应该引发一个例外。也许在Pycharm的调试过程中会发生什么,比如在变量monitor /'watch'中调用is_valid()? (顺便说一句,如果这解决了你的问题,请将我的答案标记为'accepted') – Arjen 2011-04-12 11:23:19

+0

WOW!有同样的问题!这是疯了,但代码只能用于调试:/ – MatheusJardimB 2014-12-01 17:16:57

0

只有在窗体上调用is_valid()之后,才能访问Django窗体的cleaned_data属性。

form = PostForm(request.POST) 

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