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

 更新时间:2020年06月07日 10:08:23   作者:平仄平仄平平仄  
这篇文章主要介绍了Django-form表单与请求的生命周期,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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表单与请求的生命周期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深度学习TextRNN的tensorflow1.14实现示例

    深度学习TextRNN的tensorflow1.14实现示例

    这篇文章主要介绍了深度学习TextRNN的tensorflow1.14实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Python区块链创建Genesis Block教程

    Python区块链创建Genesis Block教程

    这篇文章主要为大家介绍了Python区块链创建Genesis Block教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python基础之hashlib模块详解

    Python基础之hashlib模块详解

    这篇文章主要介绍了Python基础之hashlib模块详解,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python中容易被忽视的核心功能总结

    Python中容易被忽视的核心功能总结

    Python是一门富有魅力的编程语言,拥有丰富的功能和库,以及强大的社区支持,然而,有一些核心功能经常被忽视,而它们实际上可以极大地提高代码的质量、可读性和性能,本文将给大家详细的介绍一下这些容易被忽视的功能,需要的朋友可以参考下
    2023-11-11
  • python中if和elif的区别介绍

    python中if和elif的区别介绍

    这篇文章主要介绍了python中if和elif的区别,下面文章将举多个例子围绕if和eli的相关资料展开内容,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • 使用python读写txt和json(jsonl)大文件的方法步骤

    使用python读写txt和json(jsonl)大文件的方法步骤

    在Python中读取txt和json(jsonl)大文件并保存到字典是一项非常常见的操作,这篇文章主要给大家介绍了关于使用python读写txt和json(jsonl)大文件的方法步骤,需要的朋友可以参考下
    2023-12-12
  • Java中MultipartFile与File互转的实现

    Java中MultipartFile与File互转的实现

    本文主要介绍了Java中MultipartFile与File互转的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python Opencv使用ann神经网络识别手写数字功能

    Python Opencv使用ann神经网络识别手写数字功能

    这篇文章主要介绍了opencv(python)使用ann神经网络识别手写数字,由于这里主要研究knn算法,为了图简单,直接使用Keras的mnist手写数字解析模块,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python入门教程(十九)python的函数详解

    Python入门教程(十九)python的函数详解

    这篇文章主要介绍了Python入门教程(十九)python的函数,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,需要的朋友可以参考下
    2023-04-04
  • python如何利用中心坐标绘制矩形

    python如何利用中心坐标绘制矩形

    这篇文章主要介绍了python如何利用中心坐标绘制矩形问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论