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使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
什么是python类属性
Jun 10 Python
python中什么是面向对象
Jun 11 Python
python not运算符的实例用法
Jun 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
PHP4之COOKIE支持详解
2006/10/09 PHP
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
IE下js调试工具Companion.JS
2010/10/15 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
js中的面向对象入门
2017/03/06 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
python3处理含有中文的url方法
2018/05/10 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python爬取淘宝商品销量信息
2018/11/16 Python
详解python做UI界面的方法
2019/02/27 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Django更新models数据库结构步骤
2020/04/01 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
Python datetime模块使用方法小结
2020/06/18 Python
python实现canny边缘检测
2020/09/14 Python
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
如何写一个自定义标签
2012/12/28 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
采购助理岗位职责
2014/02/16 职场文书
上课迟到检讨书
2015/05/06 职场文书