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简单实现计算过期时间的方法
Jun 09 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
python实现图片文件批量重命名
Mar 23 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
树莓派实现移动拍照
Jun 22 Python
python输出决策树图形的例子
Aug 09 Python
python 发送json数据操作实例分析
Oct 15 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
python模块内置属性概念及实例
Feb 18 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
php微信开发接入
2016/08/27 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python自定义线程类简单示例
2018/03/23 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
通过代码实例了解Python sys模块
2020/09/14 Python
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
环境卫生标语
2014/06/09 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
公务员个人考察材料
2014/12/23 职场文书
期中考试复习计划
2015/01/19 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
Python超详细分步解析随机漫步
2022/03/17 Python
Redis基本数据类型List常用操作命令
2022/06/01 Redis