定义一个django form表单:
1)先定义form类,在forms.py中:
from django import forms from django.forms import ValidationError import re """ label='主机', 标签名 label_suffix='名:', 标签后缀名 initial='127.0.0.1' 初始值 error_messages={'required': '密码必填'} 错误提示信息 """ def mobile_validate(value): mobile_re = re.compile(r'^(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$') if not mobile_re.match(value): raise ValidationError('手机号码格式错误') class registerForm(forms.Form): host = forms.CharField(label='主机', label_suffix='名:', initial='127.0.0.1') port = forms.IntegerField(error_messages={'required': '端口信息必填'}) email = forms.EmailField() phone = forms.CharField(widget=forms.NumberInput, validators=[mobile_validate]) # password = forms.CharField(widget=forms.PasswordInput, label='密码')
2)生成html标签,在templates/djangoformapp/index.html中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Django Form</title>
</head>
<body>
<div align="center">
<h1>Django Form 表单</h1>
<hr>
<form action="" method="post">
{% csrf_token %}
{{ form }}
{# {{ form.as_p }}#}
{# {{ form.as_table }}#}
{# {{ form.as_ul }}#}
<input type="submit" value="提交">
</form>
</div>
</body>
</html>
3) 在views.py中做用户提交的验证
from django.shortcuts import render# Create your views here.
from .forms import registerForm
from .models import User
def index(request):
form = registerForm()
if request.method == 'POST':
# 使用提交的数据来生成form表单对象实例
form = registerForm(request.POST)
# 从form表单中获取数据
# 先判断form表单中的数据是否合法
if form.is_valid():
# 开始取数据
# 从 form.cleaned_data里面取数据
"""
1种繁琐的方式
"""
# host = form.cleaned_data.get('host')
# port = form.cleaned_data.get('port')
# email = form.cleaned_data.get('email')
# phone = form.cleaned_data.get('phone')
# print(host, port, email, phone)
# User.objects.create(host=host, port=port, email=email, phone=phone)"""
简洁一点点的
"""
User.objects.create(**form.cleaned_data)
return render(request, 'djangoformapp/index.html', {'form': form})form.is_valid()方法返回True 或False,表明用户输入的数据是否合法,是否通过校验。
如用户输入的数据不合法,错误信息将会放在form.errors这个字典中。key是字段名,value是字段的错误描述。
合法数据将会放在cleaned_data中。cleaned_data是一个字典。通常获取form中数据的方法是先判断一个form数据是否合法,如果合法则去cleaned_data中取值:
if form.is_valid():
subject = form.cleaned_data['subject']
4)将用户在前端提交的数据保存到数据库中:
所以要先定义模型类:
在models.py中:
from django.db import models
# Create your models here.class User(models.Model):
host = models.CharField(max_length=100)
port = models.IntegerField()
email = models.EmailField()
phone = models.CharField(max_length=100)
然后迁移以下数据(用makemigrations和migrate命令)
以上就完成了django form表单的创建!