Form表单及django的form表单的补充


Posted in Python onJuly 25, 2019

form 表单中的button按钮

<button>提交</button> :放在form表单中,会有一个提交事件,会提交form数据,

<input type="button" value="提交“> :是一个单纯的按钮,没有任何默认事件,

先匹配url和视图函数

from django.conf.urls import url
from django.contrib import admin

from app01 import views

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^login/', views.login),
]

视图函数

def login(request):

  if request.method == "POST":
    return HttpResponse("OK!")



  return render(request,"login.html")

在前端页面的显示

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

<form action="/login/" method="post">
{# csrf_token 在前端会渲染出一个input标签,是一组键值对,键是csrfmiddlewaretoken,值是随机字符串,会随着下面的input标签一起提交,只有这种形式发送post的请求才能被接收,#}

  {% csrf_token %}
  <p>用户名:<input type="text" name="user"></p>
  <p>密码:<input type="password" name="pwd"></p>
  <input type="submit">

</form>
</body>
</html>

----上面是正常的使用HTML的原生form表单,

现在使用django提供的form表单,在views里要创建一个类,继承django的forms类,

然后在视图函数中实例化出一个form对象,利用类的字段在前端页面进行显示,

as_p 是把后端所有的字段都显示,定制性不好,可以自定义,利用对象,跟上字段

在views 创键类,

from django.shortcuts import render,HttpResponse

# Create your views here.

#使用django的form类
from django import forms

class LoginForm(forms.Form):
  user = forms.CharField()
  pwd = forms.CharField()


def login(request):

  if request.method == "POST":
    return HttpResponse("OK!")

  form_obj = LoginForm() -------------------实例化对象,
  return render(request,"login.html",{"form_obj":form_obj}) ---传到前端显示

在前端接收,渲染

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

</head>
<body>

<form action="/login/" method="post">
{# csrf_token 在前端会渲染出一个input标签,是一组键值对,键是csrfmiddlewaretoken,值是随机字符串,会随着下面的input标签一起提交,只有这种形式发送post的请求才能被接收,#}

  {% csrf_token %}
  <p>用户名:{{ form_obj.user }}</p> ------------
  <p>密 码:{{ form_obj.pwd }}</p> -------------------
  <input type="submit">

</form>

</body>

</html>

查看前端的元素,

Form表单及django的form表单的补充

---前端现在可以输入数据,但后端要对提交的数据要验证,

用到is_valid()的方法,取到提交的所有数据,cleaned_data , 如果有错误信息 用errors,

#使用django的form类
from django import forms

class LoginForm(forms.Form):
  user = forms.CharField(max_length=9,min_length=5,error_messages={"required":"必填"})
  pwd = forms.CharField()


def login(request):

  if request.method == "POST":
    #post的请求验证
    formobj = LoginForm(request.POST)#拿到所有的提交数据
    if formobj.is_valid():#都符合字段要求,

      #取出所有符合字段要求的数据,用cleaned_data
      print(formobj.cleaned_data)#拿到字典格式的数据

    else:
      print(formobj.errors)#如果是提交错误的数据,用errors



    return HttpResponse("OK!")

  form_obj = LoginForm()



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

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

Python 相关文章推荐
介绍Python的Urllib库的一些高级用法
Apr 30 Python
python自带的http模块详解
Nov 06 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
K-近邻算法的python实现代码分享
Dec 09 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
Python小白不正确的使用类变量实例
May 29 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
使用tensorflow 实现反向传播求导
May 26 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 #Python
python按修改时间顺序排列文件的实例代码
Jul 25 #Python
在python中用url_for构造URL的方法
Jul 25 #Python
对python中url参数编码与解码的实例详解
Jul 25 #Python
使用WingPro 7 设置Python路径的方法
Jul 24 #Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 #Python
简单了解Django应用app及分布式路由
Jul 24 #Python
You might like
php str_pad 函数用法简介
2009/07/11 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
JQuery基础语法小结
2015/02/27 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
python实现在目录中查找指定文件的方法
2014/11/11 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python批量查询域名是否被注册过
2017/06/21 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
python实现归并排序算法
2018/11/22 Python
python实现简单多人聊天室
2018/12/11 Python
Python插件机制实现详解
2020/05/04 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
小学生暑假家长评语
2014/04/17 职场文书
三万活动总结
2014/04/28 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
岳麓书院导游词
2015/02/03 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis