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中使用smtplib和email模块发送邮件实例
Apr 22 Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
Python 基础教程之包和类的用法
Feb 23 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
python unittest实现api自动化测试
Apr 04 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
Django Rest framework权限的详细用法
Jul 25 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
Python 多进程原理及实现
Dec 21 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代码
2013/11/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
简单实现Python爬取网络图片
2018/04/01 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
Servlet的生命周期
2013/08/25 面试题
日语专业个人的求职信
2013/12/03 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
财务总监管理职责范文
2014/03/09 职场文书
班级标语大全
2014/06/21 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书