【问题标题】:Validating Form for Class-based view为基于类的视图验证表单
【发布时间】:2021-07-17 06:02:03
【问题描述】:

我希望你们能告诉我如何在我的 forms.py 中对单个字段使用验证方法。我的视图是generic.FormView,我的表单是forms.Form。这是我的看法:

class ClassSetupView(OrganisorAndLoginRequiredMixin, generic.FormView):
    template_name = "leads/class_setup.html"
    form_class = ClassSetupForm

    def get_success_url(self):
        return reverse("class-setup-sucess-page")
    def form_valid(self, form):
        # Some Other Code
        return super(ClassSetupView, self).form_valid(form)

这是我的表格:

class ClassSetupForm(forms.Form):
    date = forms.DateField(help_text="Year-01-01",)
    
    clean_date(self):
        date = self.cleaned_data['date']

        if date < datetime.date.today():
            raise ValidationError(_('Invalid date - renewal in past'))

        return date

我希望你们能告诉我是否可以将clean_date(self) 用于表单作为验证字段date 的一种方式。我在网上看到了几个例子,但我不确定clean_date(self) 是否适合我的情况。谢谢。

【问题讨论】:

    标签: django validation django-views django-forms django-validation


    【解决方案1】:

    可以使用干净的方法进行验证。查看官方 django 文档:https://docs.djangoproject.com/en/3.2/ref/forms/validation/#cleaning-a-specific-field-attribute

    【讨论】:

    • 感谢您的评论。只是为了下次知识,我可以将 clean 方法用于任何类型的视图(无论是基于函数还是基于类)?
    • @codebuilder 您可以在应用程序的任何位置使用表单,但干净的方法位于 Django 表单的接口中,因此它们应该像您一样编写在表单类中。
    • 哦。我的意思是在表单中使用 clean 方法时,视图的类型(表单链接到的)是否重要?具体来说,我可以对任何类型的表单(如ModelFormForm)使用干净的方法,它链接到任何类型的视图(如基于函数和基于类)?
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2018-08-31
    • 2017-04-06
    • 2020-08-25
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多