IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> django梳理 -> 正文阅读

[Python知识库]django梳理

概述

1.? 框架推导流程

?web框架_Yietong309的博客-CSDN博客

前期准备知识

2.? django请求生命周期流程图

?客户端发送HTTP发送request请求,经过网关发送到中间件,在经过路由层,视图层,模型层/模板层【这两个都与视图层打交道:模板层与视图层有模板语法传值,模型层还会与数据库打交道】然后返回给中间件进行数据安全校验,再发送给网关【经过wsgi协议】封装成数据响应response给客户端。

HTTP 》》web网关》》中间件》》路由views>>【templates》》models》》】,【models》》MySQL】《《views《《中间件校验数据《《web网关经过wsgi协议封装后响应给浏览器。

Django 项目的创建及常见问题_Yietong309的博客-CSDN博客

Django--request 对象_Yietong309的博客-CSDN博客_django的request对象

HttpResponse响应、render 响应、redirect 响应、JsonResponse 响应_Yietong309的博客-CSDN博客_httpresponse render

3. 中间件

中间件走势, 使用场景

自定义的5个方法

django中间件类似于django的门户 所有的请求来和响应走都必须经过中间件
django默认自带七个中间件 每个中间件都有各自负责的功能
django中间件除了默认的之外 还支持自定义中间件(无限)
django中间件使用场景
?? ?全局相关的功能:
? ? ? ? 全局用户身份校验 全局用户黑名单校验 全局用户访问频率校验
django自定义中间件中可以有五个方法
?? ?process_request
? ?? ?process_response
??? ?process_view
? ?? ?process_template_response
??? ?process_exception

?
1.process_request
?? ?1.请求来的时候会按照配置文件中注册了的中间件 从上往下依次执行每一个中间件里面的process_request方法 如果没有则直接跳过
??? ?2.该方法如果返回了HttpResonse对象 那么请求不会再往后执行 原路返回
2.process_response
?? ?1.响应走的时候会按照配置文件中注册了的中间件 从下往上一次执行每一个中间件里面的process_response方法 没有没有则直接跳过
??? ?2.该方法有两个形参request和response 并且默认情况下应该返回response
? ?? ?3.该方法也可以自己返回HttpResponse对象 相当于狸猫换太子
ps:如果请求的过程中process_request方法直接反悔了HttpResponse对象那么会原地执行同级别process_response方法返回(flask则不同)
3.process_view
?? ?当路由匹配成功之后 执行视图函数之前 自动触发
4.process_excption
?? ?当视图函数报错之后 自动触发
5.process_template_response
?? ?当视图函数返回的数据对象中含有render属性对应render函数才会触发

csrf及auth模块_Yietong309的博客-CSDN博客

4. 路由层 urls.py

Django之路由层_Yietong309的博客-CSDN博客

路由匹配成功之后会调用视图函数, 默认情况下会自动给视图函数传递一个request位置参数。 如果路由中有括号对正则进行分组,优先将括号内的内容匹配【位置参数】。即无名分组, 有名分组就是给它起个别名【关键字参数】。

使用情况: 单个的可以重复使用, 两者不能混用。

反向解析》》 有/无名分组反向解析? 》》 目的: 找到路由进行匹配

路由分发: 多项目并行。 各自有路由, 避免重名, 也可以用namespace。。

5. 视图层 views.py

四十三、视图层_许小许520的博客-CSDN博客

网页伪静态? a.html

视图函数有返回值,httpresponse 对象

返回json格式字符串》》 import JsonResponse 直接返回json格式, 可代替httpresponse

乱码情况》》{ json-dump-parmas: {ensureascii:false}}? [只能字典, 其他数据类型要+safe=false

form表单文件 method属性》》post。? enctype >>默认multpls/form-data, 还有encloded, json

? ? 后端获取文件 request.files>>>.get()可读

FBV与CBV

FBV与CBV, CBV源码剖析_Yietong309的博客-CSDN博客

CBV根据请求方式的不同子佛能够识别并匹配路由

6. 模板层?

模板语法传值? {{变量名}}? ?{% 逻辑 %}

locals(),? / {name:name}

只支持句点符取值

过滤,类似于内置函数, length,add/...

forloop>>for循环

自定义标签, 过滤器 templatetags, inclsion tag?

Django--inclusion_tag_Yietong309的博客-CSDN博客

py文件内引入四句话就能进行代码执行

前端页面 {% load mytag %}

自定义函数

simpletag/ inclsiontag()

模板继承与导入

Django 模板的导入与继承_Yietong309的博客-CSDN博客

继承 extend >> block super()进行过更改? 三个区域

导入》》导入某个部分 {% Include a.html %}

Django 不同版本的区别--路由层与模板层_Yietong309的博客-CSDN博客

7. 模型层 models。py

Django链接MySQL_Yietong309的博客-CSDN博客

ORM基本操作_Yietong309的博客-CSDN博客

Django-ORM 单表查询_Yietong309的博客-CSDN博客

Django--ORM 多表查询_Yietong309的博客-CSDN博客_django orm 连表查询

py文件内引入四句话就能进行代码执行

ORM 关键字 双下线, 查看底层SQL, 外键,?

正反向查询,子查询,,连表查询, 聚合查询【aggregate],分组查询[annotate], 分组前后查询条件

filter 在annotate前后 where/ having

F查, 查表里的字段,到模块

Q查, 逻辑, 字符串搜索?

ORM优化查询 only & defer? , prefetch_related/select_related

查的字段能否点出来, 走不走数据库查询

ORM 单表记录与字段操作_Yietong309的博客-CSDN博客

事务特性acid

MySQL 事务隔离级别,读现象,MVCC_Yietong309的博客-CSDN博客

ORM字段及参数Django--ORM 常用字段及属性介绍_Yietong309的博客-CSDN博客

?四种表关系, 第三张表创建方式

?orm查询相关

8. Ajax 异步提交,局部刷新Ajax简介_Yietong309的博客-CSDN博客

序列化 serializer

分页器? bulk_create/update? ?渲染》》 divmod()

9. form 组件?form组件源码

校验数据? 钩子?钩子函数和forms组件_Yietong309的博客-CSDN博客_cookie钩子

渲染页面 {% for xx in xx_obj %}

? ? p {{ form.label}} {{form}} p

展示信息? 错误提示

model form组件? fields = '__all__'? ?instance参数

?django自带的序列化组件_Yietong309的博客-CSDN博客

10. cookie, session

客户端, 浏览器? 》》》token?

登录设置cookie,装饰器校验多个视图函数校验用户是否登录,

session 14天, 字典? request.session['name'] = 'jason'赋值加密??request.session.get('name')比对解密展示?? 5种存session的方式? ?delete/ flush/set_expiry(v)

cookie, session 与 token --JWT_Yietong309的博客-CSDN博客

django操作session、django中间件简介、五个常见方法、CBV添加装饰器的三种方式、csrf跨站请求伪造_Yietong309的博客-CSDN博客_django session中间件

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:11:19  更:2022-10-22 21:13:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 6:41:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码