【问题标题】:Verify submitted Django form in view在视图中验证提交的 Django 表单
【发布时间】:2017-11-11 03:25:15
【问题描述】:

我有一个视图,它需要一个 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()

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以编写如下视图:

    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})
    

    【讨论】:

      【解决方案3】:
      if request.method == 'POST':
         form = PostForm(request.POST or None)
         if form.is_valid():
            // do your save work
      

      【讨论】:

      • 我对@neverwalkaloner 有同样的评论。这行得通吗?我的意思是request.POST 包含各种数据,而不仅仅是提交的表单。
      • 你在用什么?表单?如果您有表格,那么这只会采用表格中的字段
      • 是的,我正在使用表单。我明白了,感谢您提供的信息。
      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多