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中的Queue与多进程
Aug 25 Python
Python中如何导入类示例详解
Apr 17 Python
python覆盖写入,追加写入的实例
Jun 26 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 Python
Django学习之文件上传与下载
Oct 06 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 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代码
2010/08/08 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
Python将xml和xsl转换为html的方法
2015/03/10 Python
详解Python中的各种函数的使用
2015/05/24 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
python中类与对象之间的关系详解
2020/12/16 Python
信息专业大学生自我评价分享
2014/01/17 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
村安全生产责任书
2014/08/25 职场文书
公务员政审个人总结
2015/02/12 职场文书
小学少先队活动总结
2015/05/08 职场文书