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中MySQLdb模块用法实例
Nov 10 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
python实现决策树分类算法
Dec 21 Python
Python聊天室程序(基础版)
Apr 01 Python
python获取代码运行时间的实例代码
Jun 11 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
Python实现对adb命令封装
Mar 06 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 Python
python中validators库的使用方法详解
Sep 23 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
php include类文件超时问题处理
2015/02/06 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Python中字符串对齐方法介绍
2015/05/21 Python
Python绘制七段数码管实例代码
2017/12/20 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
面料业务员岗位职责
2013/12/26 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
家长通知书家长评语
2014/04/17 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python