django 字段是必需的验证器

Posted

技术标签:

【中文标题】django 字段是必需的验证器【英文标题】:django field is required validators 【发布时间】:2016-10-21 14:52:29 【问题描述】:

我有一页有一些表格,我也尝试验证一些字段。

因此,如果我在测试字段中输入错误,我显然会收到消息“无效输入”,但对于其他字段,也会收到消息“此字段是必需的。”。

我该如何解决?覆盖清洁功能?但是怎么做呢?

class Example1Form(forms.ModelForm):

    test = forms.CharField(max_length=30, validators=[RegexValidator(r'^[a-zA-Z0-9_-]+$'), MaxLengthValidator(30)])

我还区分了不同的形式,例如:

class View(TemplateView):
    def post(self, request, *args, **kwargs):
        form_example1 = Example1Form(request.POST)
        form_example2 = Example2Form(request.POST)
        if form_example1.is_valid():
             ....
             form_example2 = Example2Form()
             return render(request, self.template, 'form_example1': form_example1, 'form_example2': form_example2)

        if form_example2.is_valid():
            ....

非常感谢您的帮助!

【问题讨论】:

您要修复什么? 我不想收到其他表单的消息。我有许多带有许多提交按钮的表单。但我也收到不同形式的“必需”消息。 那么在视图中你应该检查提交了哪个表单并且只在提交的表单上执行is_valid而不是在其他表单上。 我有这个。我扩展了一些代码。 .is_valid() 不是.is_valid - 它是一个函数,而不是一个属性。 .is_valid 将始终为“真”。 【参考方案1】:

首先,您需要一种方法来判断提交了哪个表单。您可以为提交按钮命名,例如:

<form>
     form_example1 
    <input name="form_example_1" type="submit" value="Submit form 1">
</form>

<form>
     form_example2 
    <input name="form_example_2" type="submit" value="Submit form 2">
</form>

然后,在您看来,您应该只将表单绑定到 POST 数据(如果该表单已提交)。例如:

if "form_example1" in request.POST:
    form_example1 = Example1Form(request.POST)
else:
    form_example1 = Example1Form()

if "form_example2" in request.POST:
    form_example2 = Example2Form(request.POST)
else:
    form_example2 = Example2Form()

【讨论】:

以上是关于django 字段是必需的验证器的主要内容,如果未能解决你的问题,请参考以下文章

Django - PUT 端点验证器错误“wrapped_view() 缺少 1 个必需的位置参数:'request'”

Laravel 验证 - 数组字段,仅允许两个字段之一,但都不是必需的

必填字段的 JSF 验证

如果条件为必需的字段验证

22PHP 表单 - 必需字段

雷林鹏分享:PHP 表单 - 必需字段