Django 代码仅在调试模式下有效
我对这个问题感到很困惑。这段在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检查器中看到的错误
<th>Exception Value:</th>
<td><pre>'PostForm' object has no attribute 'cleaned_data'</pre></td>
没有属性cleaned_data?这为什么会这样呢...?
2 个回答
0
在Django中,表单的cleaned_data属性在你调用is_valid()
方法之前是无法访问的。
form = PostForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
...
4
在你对一个表单调用 is_valid()
方法之后,cleaned_data
这个属性就可以用了。你应该把 cd = form.cleaned_data
这行代码放到 if
语句下面。