模板中的HTML表单属于静态编码,要改变表单就必须修改模板。
Django表单通过扩展django.forms.Form类可在视图中动态生成表单。
使用Django表单的基本步骤包括:
定义表单类
定义使用表单类和模板的视图
定义表单模板
配置URL访问视图
from django import forms
……
class dataForm(forms.Form):
data = forms.CharField(label='请输入数据')
自定义的表单类dataForm继承了django.forms.Form类,它包含一个data字段。字段data的类型为forms.CharField。
表单data字段会被渲染为一个元素和一个元素。
表单字段的label参数指定在表单渲染生成的元素中显示的字符串。
在视图中需要创建表单类的实例对象,并将其作为参数传递给模板,代码如下。
def useDataForm(request):
if request.method == 'POST':
form = dataForm(request.POST) #使用接收到的数据创建表单
msg="已完成数据提交!"
else:
form = dataForm() #创建空白表单
msg='初始表单'
return render(request, 'temdataform.html', {'form': form,'msg':msg})
在直接使用HTML表单时,视图将接收到的数据传递给模板,以便在响应页面中回显数据。
在使用Django表单时,视图使用接收到的数据创建表单,先将数据填入表单字段,再将表单对象传递给模板。
模板通过变量使用视图传递的表单对象,代码如下。
{% csrf_token %}
{ {form}}
{ {msg}}
URL配置代码如下。
from django.urls import path
from . import views
urlpatterns = [
……
path('dform/', views.useDataForm),
]