📌  相关文章
📜  FormView – 基于类的视图 Django(1)

📅  最后修改于: 2023-12-03 15:30:50.935000             🧑  作者: Mango

FormView – 基于类的视图 Django

简介

在 Django 中,视图是处理请求并在响应中返回 HTTP 响应的函数,而基于类的视图是一种更复杂和更灵活的方式来定义视图。FormView 是 Django 中基于类的视图之一,它显示一个表单,并在提交表单时验证数据并执行其他相关操作。

使用

使用 FormView 需要将其子类化并提供以下属性和方法:

属性
  • template_name:模板名称,用于渲染视图。
  • success_url:表单成功提交后应该跳转的路径(必须定义)。
  • form_class:要使用的表单类(必须定义)。
方法
  • form_valid(form):在表单验证成功后调用,返回 HTTP 重定向到 success_url。
  • form_invalid(form):在表单验证失败时调用,返回一个渲染的包含表单错误的页面。

下面是一个简单的例子:

from django import forms
from django.views.generic.edit import FormView
from django.urls import reverse_lazy

class ContactForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

class ContactView(FormView):
    template_name = 'contact.html'
    form_class = ContactForm
    success_url = reverse_lazy('success')

    def form_valid(self, form):
        # 处理表单提交成功逻辑
        return super().form_valid(form)

    def form_invalid(self, form):
        # 处理表单提交失败逻辑
        return super().form_invalid(form)
注意事项
  • 在表单类中定义的表单字段必须与模板中的表单字段名称相同,否则提交的数据将无法验证。
  • 在表单验证成功后,使用 super().form_valid(form) 调用默认成功逻辑,该逻辑将重定向到 success_url。
  • 如果使用自定义成功逻辑,可以通过重写 form_valid() 方法来实现,不需要调用 super().form_valid(form)。

以上就是 FormView 的基本用法和注意事项,通过继承它并重写相应的属性和方法,可以方便地自定义表单的验证逻辑和错误返回页面。