在视图中验证提交的Django表单

时间:2017-06-09 07:49:32

标签: python django forms model-view-controller view

我有一个视图,它需要一个POST请求。帖子请求应包含通过Django表单提交的数据。

Django表单看起来像这样:

class SubmitForm(forms.Form):
    title = forms.CharField(max_length=100)
    comment = forms.CharField(max_length=255)

我知道我可以使用request.POST["title"]request.POST["comment"]访问提交的数据。所以我理论上可以检查它们是否已设置并且手动有效。

但有没有办法使用.is_valid()(链接到Django documentation)来验证提交的表单?

一种可能性是在视图中创建一个表单,用提交的数据填充它,然后检查它的有效性。

data = {'title': request.POST["title"],
        'comment': request.POST["comment"]}
f = SubmitForm(data)
f.is_valid()
# True/False

是否有直接的方式在提交的Django表单上使用is_valid()

3 个答案:

答案 0 :(得分:1)

您可以直接将request.POST作为Form参数传递:

form = PostForm(request.POST or None)
if form.is_valid():
    ....

答案 1 :(得分:1)

您可以按如下方式编写视图:

def verify_view(request):
    if request.method == "POST":
        form = SubmitForm(request.POST)
        if form.is_valid():
          # code here if form is valid
    else:
        form = SubmitForm() # returns empty form to be fill if not post request
    return render(request, 'template_form.html', {'form': form})

答案 2 :(得分:1)

if request.method == 'POST':
   form = PostForm(request.POST or None)
   if form.is_valid():
      // do your save work