django 表单系统 之 forms.Form

时间:2023-03-09 04:10:57
django 表单系统 之 forms.Form

继承forms.Form实现django表单系统

参考:

https://www.cnblogs.com/zongfa/p/7709639.html

https://www.cnblogs.com/chenchao1990/p/5284237.html

官方文档:

https://docs.djangoproject.com/en/dev/topics/forms/

https://docs.djangoproject.com/en/1.11/ref/forms/

继承forms.Form可以实现基于model的django表单

而继承forms.Form可以实现一般的django表单,

django表单的功能:

  • 自动生成HTML表单元素
  • 检查表单数据的合法性
  • 如果验证错误,重新显示表单(数据不会重置)
  • 数据类型转换(字符类型的数据转换成相应的Python类型)

表单定义:

from django import formsclass NameForm(forms.Form):

your_name = forms.CharField(label='Your name', max_length=100)

上面这个标签渲染后的效果:

<label for="your_name">Your name: </label><input id="your_name" type="text" name="your_name" maxlength="100" required>

view中向前端传页面:

from django.shortcuts import renderfrom django.http import HttpResponseRedirect

from .forms import NameForm

def get_name(request):

# post请求

if request.method == 'POST':

form = NameForm(request.POST)

# 表单验证

if form.is_valid():

# 用form.cleaned_data获取经过验证后的表单数据(字典格式)然后进行所需的处理

# ...

# redirect to a new URL:

return HttpResponseRedirect('/thanks/')

# get请求

else:

form = NameForm()

return render(request, 'name.html', {'form': form})

前端调用:

<form action="/your-name/" method="post">

{% csrf_token %}

{{ form }}

<input type="submit" value="Submit"></form>