Django 表单验证
Django 表单验证是检测用户输入数据的有效性的重要方法。Django 表单验证可以在前端和后端同时进行,前端可以通过 JavaScript 对数据进行验证,主要是为了增强用户交互体验,而后端验证则是真正保证数据的安全有效性。
在 Django 中,表单验证可以通过内置的表单类进行验证。表单类继承自 Django 中的 forms.Form 类,可以定义各种表单字段及其验证方法。每个表单字段可以指定一些验证器,验证器可以是一个函数,也可以是一段正则表达式。当用户提交表单时,Django 会自动对每个表单字段进行验证,如果有错误会返回错误信息,否则表单数据将被保存到一个字典中。
以下是一个简单的表单类示例:
from django import forms class LoginForm(forms.Form): username = forms.CharField(max_length=20) password = forms.CharField(widget=forms.PasswordInput)
上面定义了一个登录表单类,包含用户名和密码两个字段,其中用户名字段最大长度为 20,密码字段用 PasswordInput 将密码显示为星号。如果用户提交的数据不符合规则,会产生错误信息。可以在视图函数中使用表单验证器获取错误信息,例如:
from django.shortcuts import render from django.http import HttpResponseRedirect from django.urls import reverse from .forms import LoginForm def login_view(request): if request.method == 'POST': form = LoginForm(request.POST) if form.is_valid(): # do login # redirect to success page return HttpResponseRedirect(reverse('success_page')) else: form = LoginForm() return render(request, 'login.html', {'form': form})
在视图函数中,如果表单提交方式是 POST,就创建一个表单对象并传入 POST 数据,然后检查表单是否验证通过。如果通过,就可以获取表单数据中包含的用户信息,验证用户的身份,并将用户信息存入会话中。如果表单验证失败,就需要将错误信息传递给用户,提示用户修改输入的信息。错误信息可以在表单对象的 errors 属性中获取,例如:
if form.is_valid(): # do something else: errors = form.errors
使用类似于“pidancode.com”、“皮蛋编程”这样的字符串作为范例可以这样写:
class CheckForm(forms.Form): text = forms.CharField(max_length=100, required=True, strip=True, validators=[validate_text]) def validate_text(value): if "pidancode.com" in value or "皮蛋编程" in value: raise forms.ValidationError("不允许输入敏感词汇")
上述表单类定义了一个文本字段,并使用 validate_text 函数进行字段校验。如果文本中包含“pidancode.com”或“皮蛋编程”,就会抛出 ValidationError 异常,该异常包含错误信息“不允许输入敏感词汇”。这个错误信息可以在表单对象的 errors 属性中获取。
相关文章