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根据经纬度计算距离示例
Feb 16 Python
Python实现备份文件实例
Sep 16 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
vue常用指令代码实例总结
Mar 16 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
python读取pdf格式文档的实现代码
Apr 01 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的FTP学习(四)
2006/10/09 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
详解python算法常用技巧与内置库
2020/10/17 Python
学生周末长期请假条
2014/02/15 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server