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的表单系统相关推荐

  1. Django提交表单报错:CSRF token missing or incorrect.

    1.在Django提交表单时报错:Django提交表单报错: CSRF token missing or incorrect 具体报错页面如下: 2.有道词典翻译后如下: 通常,当存在真正的跨站点请求 ...

  2. 填表统计预约打卡表单系统

    填表统计预约打卡表单系统是一款基于FastAdmin+ThinkPHP+UniApp开发的一款集信息填表.预约报名,签到打卡.活动通知.报名投票.班级统计等功能的自定义表单统计小程序. 体验链接 功能 ...

  3. 一文告诉你什么是开源表单系统

    熟悉市场的人都知道,传统的表单存在效率低的瓶颈,无法满足当前很多企业的业务需求.开源表单系统也是顺应时代发展需求应运而生的产物,在提升企业办公效率和协作效率,推动企业数字化转型方面意义重大.今天这篇文 ...

  4. 【分享】用友U8无需API开发连接表单系统、CRM系统、数据库等第三方应用

    用友U8用户使用场景: 每当用友U8有存货修改时,需要仓库管理员查询存货档案详情,然后在钉钉宜搭上查询对应货品详情并进行修改,确保两个系统的信息统一,便于销售人员调整营销策略. 但整个流程耗费一定的时 ...

  5. 利用延时处理实现表单系统数据通过微信公众号自动发送消息提醒

    延时处理是指在流程搭建过程中,在第一个步骤完成后不需要立即开启后续步骤,需要几个小时或者几天后再执行,这时可以利用延时处理功能,来实现数据流程. 如:利用集简云无代码软件集成平台, 连接金数据表单系统 ...

  6. c语言实现用户注册,Django HTML表单实现用户注册

    在本节我们将进入逻辑性较强的代码环节,主要以实现项目中功能为主,并且会穿插介绍一些知识点,带领大家对之前讲过的知识进行重点复习,做到温故而知新.在以下几节中我们将重点介绍如何实现 Django 的注册 ...

  7. java自定义表单系统_表单识别:自定义表单模板无需额外定制

    在各行各业中,Excel和WPS是办公标配工具,办公的时候,我们经常遇到这样一个需求:将纸质表格/表格图片导入Excel. 面对这种需求,多数人会选择在Excel中新建表单,对照着图片将内容一点一点敲 ...

  8. python表单_python-基于添加表单的Django编辑表单?

    如果要从ModelForm扩展表单,请使用2974509176157897897728关键字参数. 在这里,我们是通过现有的2974509176174174674944还是通过新的,这取决于我们是在编 ...

  9. django Form表单验证

    这一部分涉及到三个地方:前端表单设计,表单验证的Form类编写,解析函数Views编写: 文章目录 前端表单 表单验证的Form类编写 后端view函数 前端表单 新建一个form_test.html ...

最新文章

  1. [NOI2002] 银河英雄传说(带权并查集好题)
  2. 转帖 .Net(C#)纯GDI+绘制实时动态曲线图之二(曲线控件全部源码)
  3. 网络基础知识——以太网
  4. NO1:在Windows端安装SecureCRT来连接Linux
  5. 以孩子兄弟链表为存储结构,请设计递归算法求树的高度
  6. c#使用椭圆签名算法制作软件序列号
  7. Ubuntu 使用 Smina 对接教程
  8. 论文笔记_S2D.29_2017_CVPR_多尺度连续CRFs作为序列深度网络的单目深度估计
  9. U-BOOT 编译过程
  10. 阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
  11. 生产环境 xfs filesystem 上安装Mariadb
  12. 网易云音乐服务器code521,网易云音乐scode500是怎么回事 网易云音乐scode502怎么解决...
  13. cpan安装软件时报错
  14. UVALive 3959 Rectangular Polygons (排序贪心)
  15. 晚安西南-----液气分离器
  16. JPA 概述及 SpringDataJpa 框架基本使用指南
  17. SOAP(简单对象访问协议) 1.1规范简介
  18. ProjectEuler Problem1.Multiples of 3 and 5
  19. C语言——小白鼠排队
  20. java int类型与long类型

热门文章

  1. OpenCV meanshift目标追踪
  2. 介绍下重绘和回流(Repaint Reflow),以及如何进行优化
  3. 44 Wild card Matching
  4. 多线程必须用到的线程池(什么时候用多线程)
  5. 应用程序下载地址汇总
  6. 微软的公开的DLL库
  7. Visual C# 3.0 新特性概览
  8. Cocos2dx-demo演示项目:Part1
  9. 新手向:从不同的角度来详细分析Redis
  10. python hdfs初体验