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实现115网盘自动下载的方法
Sep 30 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
python中的json总结
Oct 11 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
Python for循环与getitem的关系详解
Jan 02 Python
python 伯努利分布详解
Feb 25 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python中threading库实现线程锁与释放锁
May 17 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
php多层数组与对象的转换实例代码
2013/08/05 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
javascript基本语法
2016/05/31 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
用Python编写web API的教程
2015/04/30 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
分享Python字符串关键点
2015/12/13 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Django返回HTML文件的实现方法
2020/09/17 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
员工开除通知书
2015/04/25 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
关于golang高并发的实现与注意事项说明
2021/05/08 Golang