继承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>