我创建了一个表单来为我的博客项目将帖子保存到数据库中。我设计了索引页。现在我正在尝试创建一个表单来创建新帖子。在此之前我使用的是“manage.py shell”
这是我的看法:
def addpost(request):
form = addForm()
if request.method=="POST":
titleform = request.POST['title']
bodyform = request.POST['body']
checkform = request.POST['isdraft']
if form.is_valid():
n = Post(title = titleform, body = bodyform, isdraft=checkform)
n.save()
return HttpResponseRedirect('/admin/')
else:
pass
return render(request,'userside/add.html',{'form':form,})
我的模型.py:
class Post(models.Model):
title = models.CharField(max_length = 100)
body = models.TextField()
slug = AutoSlugField(populate_from='title',unique=True)
posted = models.DateField(auto_now_add=True)
isdraft = models.BooleanField()
def __unicode__(self):
return self.title
@permalink
def get_absolute_url(self):
return ('view_blog_post',None, {'postslug':self.slug})
class addForm(forms.Form):
title = forms.CharField(max_length=100)
body = forms.CharField(widget=forms.Textarea)
isdraft = forms.BooleanField()
如果我将表单提交为“isdraft”字段为 False(未选中);它给出了如下错误:
/admin/addpost/ 处的 MultiValueDictKeyError
“未在”中找到密钥“isdraft”
如果我将表单提交为“isdraft”字段为 True(checked);它什么也没给。只是令人耳目一新的形式。没有将数据添加到数据库中。
我做错了..
谢谢你
编辑: Dmitry Beransky 的回答适用于复选框错误。但它仍然没有将任何数据添加到数据库中。只是刷新表单。