Django表单组件是Django框架中处理用户输入的强大工具,它不仅可以创建HTML表单,还能进行数据验证和清洗。
Django表单组件基础
- 创建表单:通过继承
django.forms.Form
类来定义自己的表单类。 - 定义字段:在表单类中定义字段,如
CharField
、IntegerField
、DecimalField
等。 - 字段属性:可以为字段设置如
label
、initial
、required
、min_length
等属性。 - 错误信息:通过
error_messages
属性自定义字段验证错误信息。
表单验证
- 局部钩子:在表单类中定义
clean_<fieldname>()
方法来进行特定字段的验证。 - 全局钩子:定义
clean()
方法来进行整个表单的验证。 - 错误显示:验证错误时,错误信息会显示在相应的字段旁边。
表单的使用
- 视图(Views):在视图中处理GET和POST请求,创建表单实例,并根据请求方法进行处理。
- 模板(Templates):在Django模板中展示表单,可以使用
form.as_p
或手动编写HTML来展示每个字段。 - 提交处理:用户提交表单后,可以通过
form.is_valid()
方法进行数据验证,如果验证通过,则可以处理表单数据。
示例代码
以下是如何在Django中创建和使用表单的一个简单示例:
# app01/My_forms.py
from django import forms
class EmpForm(forms.Form):
name = forms.CharField(min_length=4, label="姓名")
age = forms.IntegerField(label="年龄")
salary = forms.DecimalField(label="工资")
# app01/views.py
from django.shortcuts import render
from app01.My_forms import EmpForm
def add_emp(request):
if request.method == "GET":
form = EmpForm()
else:
form = EmpForm(request.POST)
if form.is_valid():
# 处理表单数据
pass
return render(request, "add_emp.html", {
"form": form})
# app01/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('add_emp/', views.add_emp),
]
# app01/add_emp.html
<form method="post">
{
% csrf_token %}
{
{
form.as_p }}
<input type="submit">
</form>
表单渲染
在HTML模板中,可以使用以下方法渲染表单:
{ { form.as_p }}
:将表单字段渲染为包裹在<p>
标签中的表单项。{ { form.as_ul }}
:将表单字段渲染为包裹在<ul>
和<li>
标签中的列表项。- 手动渲染:获取表单的每个字段,手动编写HTML来展示。
错误信息展示
当表单验证失败时,可以在模板中使用{
{ form.errors }}
来展示错误信息。