Django form表单与请求的生命周期步骤详解


Posted in Python onJune 07, 2020

Django中请求的生命周期

HTTP请求及服务端响应中传输的所有数据都是字符串

步骤

  • 用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务器
  • url经过wsgi和中间件,到达路由映射表,在路由中一条一条进行匹配
  • 视图函数根据客户端的请求查询响应的数据,返回给
  • DjangoDjango把客户端想要的数据做为一个字符串返回给客户端
  • 客户端浏览器接收到返回的数据,经过渲染后显示给用户

FBV

一个url对应一个视图函数

url匹配成功之后,会直接执行对应的视图函数。

CBV

一个url对应一个类

url匹配成功找到视图函数中对应的类,然后这个类回到请求头中找到对应的Request.Method如果客户端以post的方式提交请求,就执行类中的post方法如果客户端以get的方式提交请求,就执行类中的get方法

步骤:

  1. 服务端发送包含url和method的请求,这两个信息都是字符串类型
  2. 服务端通过路由映射表匹配成功后会自动去找dispatch方法
  3. Django会通过dispatch反射的方式找到类中对应的方法并执行
  4. 勒种的方法执行完毕后,会把客户端想要的数据返回给dispatch方法
  5. dispatch方法把数据返回给客户端

form表单

定义:

Django的表单系统中,所有的表单都继承自django.forms.Form

Django的表单系统

form_obj.as_p		 #在html网页渲染所有的字段
label				#为一个标签添加id号
form_obj.字段		 #渲染指定的字段
min_length			#绑定字段的最短长度
max_length			#绑定字段的最长长度
is_valid()			#验证用户输入的信息是否有效,返回一个布尔值
cleaned_data()		 #清洗数据
error_massage()		 #定义错误的返回信息
#文件上传:
request.POST.get("file")	#获取上传的文件的文件名
request.FILES			#获取上传文件的对象	结果是一个字段
file_obj.name			#获取上传文件在内存中的名字
#上传文件时要使用分片传输的方式
#上传
enctype="multipart/form-data"	#form表单的属性里添加
#接收
if request.method=="POST":
 file_obj = request.FILES.get("up_file")
 fl = open(file_obj.name,'vb')
 for i in file_obj.chunks():
 fl.write(i)
 fl.close()
#可以在class Meta中设定的功能

model = model.UserInfo		#显示对于Model的字典,这里显示用户信息表
fields = "__all__"		#显示数据表中所有的字段
fields = ["username","age"]	#显示数据表的某些指定的字段
exclude = ["email"]		#不显示数据表的某些字段
#自定义页面的标签
labels = {"username":"用户名","age":"年龄","email":"邮箱"}	
#自定义在标签后面显示的提示帮助信息
help_texts = {"username":"请输入正确的用户名","email":"请输入正确的邮箱"}	
#自定义错误信息,用户输入错误时提示
error_messages = {"username":{"required":"用户名不能为空"},"email":{"invalid":"邮箱不能为空"}}
#自定义标签的类型,在这里把email这个输入框的类型更改为email类型
from django import fields as field_widget
field_classes = {}"email":field_widget.EmailField}
#自定义插件(attrs为插件的属性)
from django.forms import widgets as formwidget
widgets = {"username":formwidget.Textarea(attrs={"class":"c1"})}

总结

到此这篇关于Django-form表单与请求的生命周期的文章就介绍到这了,更多相关Django-form表单与请求的生命周期内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
详解python网络进程
Jun 15 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
python ETL工具 pyetl
Jun 07 #Python
python框架flask入门之路由及简单实现方法
Jun 07 #Python
python框架flask入门之环境搭建及开启调试
Jun 07 #Python
python实现一次性封装多条sql语句(begin end)
Jun 06 #Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 #Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 #Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 #Python
You might like
使用phpQuery采集网页的方法
2013/11/13 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
python怎么判断模块安装完成
2020/06/19 Python
python 如何停止一个死循环的线程
2020/11/24 Python
python实现无边框进度条的实例代码
2020/12/30 Python
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
软件设计的目标是什么
2016/12/04 面试题
体操比赛口号
2014/06/10 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
爱心捐款活动总结
2015/05/09 职场文书
情人节单身感言
2015/08/03 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python