Django 限定输入,但被“form.is\u valid”检查无效`
我在表单中输入了符合条件的内容,但被Django 限定输入,但被“form.is\u valid”检查无效`,django,Django,我在表单中输入了符合条件的内容,但被表单检查为无效。是否有效 以下是我的观点: 我添加了print(request.POST)#测试输入以检查POSTed是否成功,以及print(“表单无效”)#断言无效以检查表单是否有效 class CommentCreateView(View): template_name = "article/article_detail.html" def get(self, request, pk): return redirect
表单检查为无效。是否有效
以下是我的观点:
我添加了print(request.POST)#测试输入
以检查POST
ed是否成功,以及print(“表单无效”)#断言无效
以检查表单是否有效
class CommentCreateView(View):
template_name = "article/article_detail.html"
def get(self, request, pk):
return redirect(f"/article/detail/{ pk }")
def post(self, request, pk):
self.article = Article.objects.get(id=pk)
form = CommentForm(request.POST)
print(request.POST) # test input
if form.is_valid():
print("form is valid.") #assert valid
comment = form.save(commit=False)
print(f"Comment: {form.cleaned_data}")
comment.owner = request.user
comment.article = self.article
comment.status = 0
comment.save()
return redirect(f"/article/detail/{ pk }")
else:
print("form is invalid.") #assert invalid
comments = (Comment.objects
.filter(article=self.article, status=0)
)
context = {'article': self.article,
'comments':comments,
"form": form}
return render(request, self.template_name, context)
注释
模型数据`:
class Comment(models.Model):
STATUS = (
(0, 'normal'),
(-1, 'deleted'),
)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
article = models.ForeignKey(Article, on_delete=models.CASCADE)
comment = models.TextField() # set the widget
status = models.IntegerField(choices=STATUS)
date_created = models.DateTimeField(default=datetime.now)
date_updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.comment
还有forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['comment', 'date_created']
widgets = {'comment': forms.Textarea(attrs={'cols': 80})}
错误报告:
Django version 1.11.13, using settings 'forum.settings'
Starting development server at http: // 127.0.0.1: 8001/
Quit the server with CONTROL-C.
<QueryDict: {'csrfmiddlewaretoken': ['jL9aDh0cSNgvlmGWtI5sogFlruIvLh4rHqt0jll2V3H70Bel35IDFq6cgkWhAJHK'], 'comment': ['issue a test']} >
form is invalid.
[09/Jun/2018 13:12:32] "POST /article/comment/create/17 HTTP/1.1" 200 4183
Django 1.11.13版,使用设置“forum.settings”
正在http://127.0.0.1:8001启动开发服务器/
使用CONTROL-C退出服务器。
表格无效。
[09/Jun/2018 13:12:32]“POST/article/comment/create/17 HTTP/1.1”200 4183
它检查了表单是否无效
如何解决这样一个问题?你说如何解决这样一个问题是什么意思?您对限制性表单进行了检查,或者表单无效,因此用户应该修复他们发送的内容(您可以打印表单.错误
,以帮助用户解决此问题)。乍一看,您似乎没有提供创建日期
参数.ty,我将charfield改为textfield,但没有迁移@WillemVanOnsem