Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

Django 表单验证


Django 提供了多种方式来进行表单验证,以确保用户提交的数据符合预期。以下是一些常用的 Django 表单验证实现方式,以及它们的步骤流程和示例代码。

假设我们要创建一个简单的用户注册表单,包含用户名、电子邮件和密码。

方式一:基于 Django Form 类的验证

创建表单类: 创建一个继承自 django.forms.Form 的表单类,定义表单字段和验证规则。

from django import forms

class RegistrationForm(forms.Form):
    username = forms.CharField(max_length=50)
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)

视图处理: 在视图函数中,通过实例化表单类来处理用户提交的数据,并进行验证。

from django.shortcuts import render
from .forms import RegistrationForm

def registration_view(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            # 处理有效的表单数据
            username = form.cleaned_data['username']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            # 执行用户注册逻辑
            # ...
            return render(request, 'registration/success.html')
    else:
        form = RegistrationForm()

    return render(request, 'registration/registration_form.html', {'form': form})

模板渲染: 在模板文件中,使用表单对象渲染表单字段和错误信息。

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">注册</button>
</form>

方式二:基于 Django ModelForm 的验证

创建模型: 首先,创建一个用于保存用户数据的模型。

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=50)
    email = models.EmailField()
    password = models.CharField(max_length=100)

创建 ModelForm 类: 创建一个继承自 django.forms.ModelForm 的表单类,自动关联到模型。

from django import forms
from .models import User

class RegistrationForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password']
        widgets = {
            'password': forms.PasswordInput
        }

视图处理: 视图处理过程与方式一类似,实例化表单类并进行数据验证。

from django.shortcuts import render
from .forms import RegistrationForm

def registration_view(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()  # 保存用户对象到数据库
            return render(request, 'registration/success.html')
    else:
        form = RegistrationForm()

    return render(request, 'registration/registration_form.html', {'form': form})

模板渲染: 模板渲染部分与方式一相似。

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">注册</button>
</form>

这两种方式是 Django 中常用的表单验证方法。选择哪种方式取决于你的项目需求和偏好。方式一提供了更大的灵活性,适用于自定义验证逻辑。方式二基于模型,简化了数据保存的步骤,适用于需要将表单数据与数据库模型关联的情况。

假设我们有一个简单的表单模型`ContactForm`,其中包含`name`和`email`两个字段,下面将展示如何在不进行表单验证的情况下 ...
Django 表单组件允许你轻松地创建、验证和处理用户输入的数据,比如用户注册、登录、搜索等操作。数据处理:一旦用户提交了表单,表单组件将收 ...
Django的Form表单是一种用于处理和验证用户输入数据的工具,它允许您在Web应用程序中创建HTML表单并处理表单提交的数据。###最佳 ...
Django提供了多种方式来回传表单数据,以下是几种常见的实现方式,每种方式都会详细介绍步骤流程并结合示例代码进行说明。###使用Djang ...
使用Django内置的User模型和认证系统:Django提供了内置的User模型和认证系统,可以直接使用它们来处理用户的登录和注册。### ...