Django 类视图开发之FormView

一、FormView 核心功能

FormView 是 Django 的通用类视图,专门用于处理表单的 显示提交。它与普通视图的区别在于:

  • 自动处理 GET/POST 请求
  • 内置表单验证逻辑
  • 简化成功提交后的跳转流程
  • 支持自定义表单初始化

二、基础使用(用户注册示例)
1. 创建表单类
# forms.py
from django import forms
from django.contrib.auth.models import User

class RegisterForm(forms.Form):
    username = forms.CharField(max_length=30)
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)
    confirm_password = forms.CharField(widget=forms.PasswordInput)

    def clean(self):
        cleaned_data = super().clean()
        if cleaned_data.get('password') != cleaned_data.get('confirm_password'):
            self.add_error('confirm_password', "密码不一致")
        return cleaned_data
2. 配置 FormView
# views.py
from django.views.generic import FormView
from django.urls import reverse_lazy
from .forms import RegisterForm

class RegisterView(FormView):
    template_name = 'accounts/register.html'  # 模板路径
    form_class = RegisterForm                # 关联的表单类
    success_url = reverse_lazy('login')      # 成功提交后跳转地址

    def form_valid(self, form):
        # 处理有效表单数据
        User.objects.create_user(
            username=form.cleaned_data['username'],
            email=form.cleaned_data['email'],
            password=form.cleaned_data['password']
        )
        return super().form_valid(form)
3. URL 配置
# urls.py
from django.urls import path
from .views import RegisterView

urlpatterns = [
    path('register/', RegisterView.as_view(), name='register'),
]
4. 基础模板
<!-- accounts/register.html -->
<form method="post">
  {% csrf_token %}
  {
  { form.as_p }}
  <button type="submit">注册</button>
</form>

三、核心机制解析
1. 请求处理流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yant224

点滴鼓励,汇成前行星光🌟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值