Django 不验证表单

时间:2021-03-22 16:20:47

标签: python django forms

当表单被验证时,我有一个名为 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 %}

1 个答案:

答案 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)