当表单被验证时,我有一个名为 CommentForm 的表单,它必须返回 HttpResponse,这表示如果什么都不做,表单是有效的
views.py
def comment(request,pk):
blog = BlogPost.objects.get(pk=pk)
comment = CommentForm()
if request.method == "POST":
comment = CommentForm(request.POST or None)
if comment.is_valid():
return HttpResponse('this is request method')
context = {
'blog':blog,
'comment':comment,
}
return render(request, 'blog/comment.html', context)
froms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = '__all__'
models.py
class Comment(models.Model):
blog = models.ForeignKey('BlogPost', on_delete = models.CASCADE)
text = models.TextField()
template
{% extends 'base.html' %}
{% block content %}
{{blog.title}}
<form method="POST" action="">
{% csrf_token %}
{{comment.text}}
<input type="submit">
<form>
{% endblock %}
答案 0 :(得分:0)
我在我的 forms.py 中使用了 class meta 我删除了 class meta 并将注释保存到模型中,同时在 view.py 中实例化它。
form.py
class CommentForm(forms.Form):
text = forms.CharField(widget=forms.Textarea())
view.py
def comment(request,pk):
blog = BlogPost.objects.get(id=pk)
form = CommentForm()
if request.method=='POST':
form = CommentForm(request.POST)
if form.is_valid():
comments = Comment(
text = form.cleaned_data['text'],
blog =blog
)
comments.save()
return redirect('/blog')
else:
context = {'blog':blog,
'form':form}
return render(request, 'blog/comment.html', context)