• Django 请求生命周期


     

    浏览器

    遵循 HTTP协议:超文本传输协议

      - 请求首行

      - 请求头 

      -

      - 请求体

    四大特性:

      - 基于请求响应

      - 基于TCP/IP之上,作用域应用层的协议

      - 无状态

      - 无连接

    笔记连接

    数据格式:contentType

      - urlencoded :form 与 Ajax 默认的

      - formdata : form表单传输文件

      - josn : Ajax使用 

      - 补充: Ajax 传输文件使用内置对象:new Formdata()

    笔记连接

    Django后端

    <1> wsgiref (web服务网关接口)

    作用:将HTTP协议的数据格式切分成字典的形式

    特点:是django自带的,本身效率不高,仅支持1000左右的并发量,后期上线后会换成wsgi

    问: WSGI 与 wsgiref,uwsgi是什么关系?

      答:WSGI 是协议,wsgiref与uwsgi都是实现该协议的功能模块

    笔记连接

    <2>django中间件

    作用:安保,请求会依次经过注册了的中间件到达路由层

    应用:对所有请求或一部分请求做批量处理

    特点:django默认七个中间件,并有五种自定义方法

    补充:当请求到达某一个中间件时会先到缓存中查看是否有缓存,若有则直接响应到浏览器,不在走后端,若没有则继续向后端请求,当后端处理完向前端的响应到达某个中间时会给前端一份,在缓存中存一份.

    笔记连接 

    <3>urls(路由层)

    作用:将请求的功能与对应的功能函数做分发处理

    知识点:

      - 静态路由(普通路由)

      - 动态路由 :有名分组,无名分组,

      - 反向解析(路由起别名),

      - 名称空间,路由分发(include)

    笔记连接

    <4>views(视图函数)

    作用:核心逻辑的处理

    两大类:FBV 与 CBV

    知识点:

      - froms组件 :1.渲染页面, 2.校验数据, 3.展示信息   局部钩子,全局钩子  链接

      - auth模块 : 校验用户认证相关  链接

      - cookie 与 session   连接

      - 注意:逻辑处理完成向浏览器响应时,也要一次经过中间件,到达wsgiref打包成HTTP协议格式后发生到浏览器

    笔记连接 

    <5.1>templates(模板层)

    作用:html页面

    知识点:

      - 模板语法 {{ 变量相关 }} , { % 逻辑相关 % };

      - 模板导入{% include 'beautiful.html' %},

      - 模板继承,{% extend 模板名.html %}, {% block 块名 %}

      - 自定义标签,自定义过滤器,inclusion_tag

      - csrf 跨站请求伪造{% csrf_token %}  注意:Ajax请求时有三种方式

    笔记连接

    <5.2>models

    作用:对象系映射(创建表)

    知识点:

      - 数据库迁移命令: python3 manage.py makemigrations  /  python3 manage.py migrate

      - 增删改查(create,delete,update,all,filter),双下划线查询(__gt, __lt, __in=[ ], __range=[ ],......),

      - 聚合查询

      - 分组查询

      - F 与 Q 查询

      - only 与 defer

      - select_related 与 prefetch_related

      - 补充:模型表中的外键字段可以看做是被关联表中的一条记录(即对象),正向外键字段,反向表名小写

    笔记连接

    数据库

    django连接数据库(如:MySQL)

    <1>在settings.py文件中配置

    <2>在项目或app中的__init__.py文件中声明

    知识点:

      - 查询 (单表,多表)

      - 索引  连接

      - 查询优化

  • 相关阅读:
    Codeforces 1111D(退背包、排列组合)
    Codeforces 1152D(dp)
    UVaLive6443(线段树)
    UVaLive6435(dp)
    POJ1741(点分治)
    Codeforces 161D(树形dp)
    BZOJ2595(状压dp)
    关于spring java.lang.IllegalArgumentException: Name for argument type [java.lang.String] 的错误
    FingerPrint Fuzzy Vault Matlab实践
    Mybatis的ResultMap的使用
  • 原文地址:https://www.cnblogs.com/waller/p/11612611.html
Copyright © 2020-2023  润新知