HTML的form表单和django的form表单


Posted in Python onJuly 25, 2019

django的表单系统,分2种

  • 基于django.forms.Form的所有表单类的父类
  • 基于django.forms.ModelForm,可以和模型类绑定的Form

直接用原生的form表单,也可以直接用,较麻烦,

django的form表单,也可用可不要,

在views里创建一个类,继承了forms.Form ,每个字段就是一个输入框,

#-----
#django 的form表单

from django import forms

class MyForm(forms.Form):
  #forms对应的是前端的form表单,form 表单要验证的字段
  #都与校验有关系,与数据库没有关系

  #封装性强,可以 在前端指定显示那些字段,label 是显示指定的数据,
  user = forms.CharField(label="用户名")#输入的用户名,
  age = forms.IntegerField(label="年龄")
  email = forms.EmailField()


#form注册

def reg2(request):
  # 实列化出一个form对象,传到前端

  form_obj = MyForm()

  return render(request,"reg2.html",{"form_obj":form_obj})

在前端新建一个注册页面,前端渲染表单,是后端表单类实例出来的对象,用对象调用每个字段,

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>

</head>
<body>

<h3>form表单使用</h3>
<form action="/reg2/" method="post">
{#  渲染从后端传来的变量,as_p 是段落#}
  {% csrf_token %}
{#  {{ form_obj.as_p }}#}
  <p>姓名{{ form_obj.user }}</p>
  <p>年龄{{ form_obj.age }}</p>
  <p>邮箱{{ form_obj.email }}</p>

</form>

</body>

</html>

可以从浏览器的检查元素中看到,浏览器自动添加了一些东西,

<body>

<h3>form表单使用</h3>
<form action="/reg2/" method="post">

  <input name="csrfmiddlewaretoken" value="GyY3KE5uM7HeErOEZ8OQFwUJYQYaknrOmavdmfufBuVOHdDSWfeHDyt2pjXarGAV" type="hidden">

  <p>姓名<input name="user" required="" id="id_user" type="text"></p>
  <p>年龄<input name="age" required="" id="id_age" type="number"></p>
  <p>邮箱<input name="email" required="" id="id_email" type="email"></p>

</form>
</body>

如果在前端页面随便输入就提交,前端会做校验,这都是浏览器做的校验,

HTML的form表单和django的form表单

可以自己定制,字段的错误信息提示,和显示信息,

#django 的form表单
 
from django import forms
 
class MyForm(forms.Form):
  #forms对应的是前端的form表单,form 表单要验证的字段
  #都与校验有关系,与数据库没有关系
 
  #封装性强,可以 在前端指定显示那些字段,label 是显示指定的数据,require 是必须填写的,
  user = forms.CharField(label="用户名",min_length=5,max_length=8)#输入的用户名,
  age = forms.IntegerField(label="年龄",error_messages={"required":"必填",})
  email = forms.EmailField()
 
 
#form注册
 
def reg2(request):
 
  errors_obj = " "
  if request.method == "POST":
    form_post = MyForm(request.POST)#拿到请求的所有数据
    if form_post.is_valid():#判断数据是否合法,返回布尔值,
 
      print("data",form_post.cleaned_data)#获取数据,得到一个字典格式,
 
    #添加数据库
    # User.objects.create_user()
  # 实列化出一个form对象,传到前端
 
    #如果是输入不合格式的信息,错误信息,
    else:
      #获取错误信息
      errors_obj = form_post.errors
 
      # print("error",form_post.errors["user"][0])
      # print("error",form_post.errors["age"])
      # print("error",type(form_post.errors))#字典类型,
 
 
  form_obj = MyForm()
 
  return render(request,"reg2.html",{"form_obj":form_obj,"errors_obj":errors_obj})

在前端页面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>

</head>
<body>

<h3>form表单使用</h3>
<form action="/reg2/" method="post">
{#  渲染从后端传来的变量,as_p 是段落#}
  {% csrf_token %}
{#  {{ form_obj.as_p }}#}
  <p>姓名{{ form_obj.user }} <span>{{ errors.obj.user.0 }}</span> </p>
  <p>年龄{{ form_obj.age }}<span>{{ errors.obj.age.0 }}</span></p>
  <p>邮箱{{ form_obj.email }}<span>{{ errors.obj.email.0 }}</span></p>
  <input type="submit">

</form>

</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python装饰器由浅入深
Dec 09 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
django 在原有表格添加或删除字段的实例
May 27 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
python统计字符的个数代码实例
Feb 07 Python
Python中内建模块collections如何使用
May 27 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
Python3 批量扫描端口的例子
Jul 25 #Python
python3 批量获取对应端口服务的实例
Jul 25 #Python
Python实现微信小程序支付功能
Jul 25 #Python
Form表单及django的form表单的补充
Jul 25 #Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 #Python
python按修改时间顺序排列文件的实例代码
Jul 25 #Python
在python中用url_for构造URL的方法
Jul 25 #Python
You might like
PHP:风雨欲来 路在何方?
2006/10/09 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
深入浅析php json 格式控制
2015/12/24 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
js实现时间日期校验
2020/05/26 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
Python 类的继承实例详解
2017/03/25 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python实现的归并排序算法示例
2017/11/21 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Python如何实现定时器功能
2020/05/28 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
项目资料员岗位职责
2013/12/10 职场文书
《自选商场》教学反思
2014/02/14 职场文书
结对共建工作方案
2014/06/02 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
优秀团支部申报材料
2014/12/26 职场文书
golang 实现并发求和
2021/05/08 Golang