django的表单系统
1、概述:
django表单系统中,自定义表单类都是以django.forms.Form为父类进行创建;
django中的Form一般有两种功能:
- 生成特定的HTML标签
- 后台验证用户提交的数据
2、在views文件中自定义form表单类:
# 自定义form表单类 class Userinfo(forms.Form):name = forms.CharField()password = forms.CharField()email = forms.EmailField()message = forms.CharField()
3、views中的方法:
def login(request):# 创建自定义表单的实例form_obj = Userinfo()# 将前端表单post的数据,封装到自定义表单类中user_info = Userinfo(request.POST)# 验证前端数据是否合法if user_info.is_valid():print Trueelse:print False# 将自定义表单的实例传到html文件中return render(request, 'login.html', {'form_obj': form_obj})
4、前端代码:
<form method="post" action="{% url 'login' %}"><p>用户名:{{ form_obj.name }}</p><p>密码:{{ form_obj.password }}</p><p>邮箱:{{ form_obj.email }}</p><p>备注:{{ form_obj.message }}</p><input type="submit" value="提交" name="submit"> </form>
5、提取前端提交的数据和捕获错误信息:
def login(request):# 创建自定义表单的实例form_obj = Userinfo()# 将前端表单post的数据,封装到自定义表单类中user_info = Userinfo(request.POST)# 验证前端数据是否合法if user_info.is_valid():# 验证通过,提取用户提交的数据print user_info.clean()else:# 验证未通过捕获错误提示print user_info.errors# 将自定义表单的实例传到html文件中return render(request, 'login.html', {'form_obj': form_obj})
6、将错误提示返回到前端展示:
def login(request):# 创建自定义表单的实例form_obj = Userinfo()# 将前端表单post的数据,封装到自定义表单类中user_info = Userinfo(request.POST)# 验证前端数据是否合法if user_info.is_valid():# 验证通过,提取用户提交的数据print user_info.clean()else:# 验证未通过捕获错误提示erro_info = user_info.errors# 用户提交了数据,返回错误信息的同时,也需要把用户填写的数据一起返回return render(request, 'login.html', {'form_obj': user_info, 'erro_info': erro_info})# 将自定义表单的实例传到html文件中return render(request, 'login.html', {'form_obj': form_obj})
7、form表单中的字段自定义:
①、自定义错误提示的显示内容:
# 自定义form表单类 class Userinfo(forms.Form):# 自定义表单字段的错误提示信息,error_messages={'required': 'xxxxxx'}name = forms.CharField(error_messages={'required': '用户名不能为空'})password = forms.CharField(error_messages={'required': '密码不能为空'})email = forms.EmailField(error_messages={'required': '邮箱不能为空'})message = forms.CharField(error_messages={'required': '备注不能为空'})
②、自定义字段对应前端标签的类型和属性:
email = forms.EmailField(error_messages={'required': u'邮箱不能为空'}) # widget属性用来修改标签的属性和类型 message = forms.CharField(error_messages={'required': u'备注不能为空'},widget=forms.Textarea(attrs={'class': 'mess_info','placeholder': u'在这里写你的备注信息'}))
③、生成下拉框:
# 自定义form表单类 class Userinfo(forms.Form):# 创建一个用户类型的元组user_type = ((1, '普通用户'),(2, '会员用户'),)# 创建一个下拉框,标签类型设置:widget=forms.widgets.Selectusertype = forms.IntegerField(required=False,widget=forms.widgets.Select(choices=user_type,attrs={'class': 'user_type'}))
④、自定义验证方法:
# coding:utf-8 from django.shortcuts import render from django import forms from django.core.exceptions import ValidationErrordef name_vaild(value):name_lenght = len(str(value))if name_lenght < 5 or name_lenght > 10:raise ValidationError('用户名的长度必须在5到10之间')# 自定义form表单类 class Userinfo(forms.Form):name = forms.CharField(validators=[name_vaild, ], error_messages={'required': u'用户名不能为空'})password = forms.CharField(error_messages={'required': u'密码不能为空'})email = forms.EmailField(error_messages={'required': u'邮箱不能为空'})# widget属性用来修改标签的属性和类型message = forms.CharField(error_messages={'required': u'备注不能为空'},widget=forms.Textarea(attrs={'class': 'mess_info','placeholder': u'在这里写你的备注信息'}))
转载于:https://www.cnblogs.com/liyu2151/p/7128588.html
django的表单系统相关推荐
- Django提交表单报错:CSRF token missing or incorrect.
1.在Django提交表单时报错:Django提交表单报错: CSRF token missing or incorrect 具体报错页面如下: 2.有道词典翻译后如下: 通常,当存在真正的跨站点请求 ...
- 填表统计预约打卡表单系统
填表统计预约打卡表单系统是一款基于FastAdmin+ThinkPHP+UniApp开发的一款集信息填表.预约报名,签到打卡.活动通知.报名投票.班级统计等功能的自定义表单统计小程序. 体验链接 功能 ...
- 一文告诉你什么是开源表单系统
熟悉市场的人都知道,传统的表单存在效率低的瓶颈,无法满足当前很多企业的业务需求.开源表单系统也是顺应时代发展需求应运而生的产物,在提升企业办公效率和协作效率,推动企业数字化转型方面意义重大.今天这篇文 ...
- 【分享】用友U8无需API开发连接表单系统、CRM系统、数据库等第三方应用
用友U8用户使用场景: 每当用友U8有存货修改时,需要仓库管理员查询存货档案详情,然后在钉钉宜搭上查询对应货品详情并进行修改,确保两个系统的信息统一,便于销售人员调整营销策略. 但整个流程耗费一定的时 ...
- 利用延时处理实现表单系统数据通过微信公众号自动发送消息提醒
延时处理是指在流程搭建过程中,在第一个步骤完成后不需要立即开启后续步骤,需要几个小时或者几天后再执行,这时可以利用延时处理功能,来实现数据流程. 如:利用集简云无代码软件集成平台, 连接金数据表单系统 ...
- c语言实现用户注册,Django HTML表单实现用户注册
在本节我们将进入逻辑性较强的代码环节,主要以实现项目中功能为主,并且会穿插介绍一些知识点,带领大家对之前讲过的知识进行重点复习,做到温故而知新.在以下几节中我们将重点介绍如何实现 Django 的注册 ...
- java自定义表单系统_表单识别:自定义表单模板无需额外定制
在各行各业中,Excel和WPS是办公标配工具,办公的时候,我们经常遇到这样一个需求:将纸质表格/表格图片导入Excel. 面对这种需求,多数人会选择在Excel中新建表单,对照着图片将内容一点一点敲 ...
- python表单_python-基于添加表单的Django编辑表单?
如果要从ModelForm扩展表单,请使用2974509176157897897728关键字参数. 在这里,我们是通过现有的2974509176174174674944还是通过新的,这取决于我们是在编 ...
- django Form表单验证
这一部分涉及到三个地方:前端表单设计,表单验证的Form类编写,解析函数Views编写: 文章目录 前端表单 表单验证的Form类编写 后端view函数 前端表单 新建一个form_test.html ...
最新文章
- [NOI2002] 银河英雄传说(带权并查集好题)
- 转帖 .Net(C#)纯GDI+绘制实时动态曲线图之二(曲线控件全部源码)
- 网络基础知识——以太网
- NO1:在Windows端安装SecureCRT来连接Linux
- 以孩子兄弟链表为存储结构,请设计递归算法求树的高度
- c#使用椭圆签名算法制作软件序列号
- Ubuntu 使用 Smina 对接教程
- 论文笔记_S2D.29_2017_CVPR_多尺度连续CRFs作为序列深度网络的单目深度估计
- U-BOOT 编译过程
- 阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
- 生产环境 xfs filesystem 上安装Mariadb
- 网易云音乐服务器code521,网易云音乐scode500是怎么回事 网易云音乐scode502怎么解决...
- cpan安装软件时报错
- UVALive 3959 Rectangular Polygons (排序贪心)
- 晚安西南-----液气分离器
- JPA 概述及 SpringDataJpa 框架基本使用指南
- SOAP(简单对象访问协议) 1.1规范简介
- ProjectEuler Problem1.Multiples of 3 and 5
- C语言——小白鼠排队
- java int类型与long类型