Session

  • Django项目默认启动Session。可以保存在数据库或内存,也可以混合存储
  • 将session放入redis,放入内存

面向对象

  • 三大特性

    封装:把属性和方法捆绑在一起,对外隐藏实现细节(类(Class)方法来封装属性和方法)

    继承:允许一个子类获取父类的属性和方法,同时可以扩展和修改它们(子类重写方法,多继承(class view(a, b)))

    多态:同一操作作用于不同的类的实例,会有不同的执行结果(使用相同方法调用不同类的实例,结果不同)

路由匹配类视图逻辑

客户端发出请求,到服务器的总路由,再分配到子路由上,get()和post()方法发出响应到客户端

多继承

  • 一个类可以同时继承多个父类,遵循MEO(方法解析顺序)

    1
    可用(类名.___mro__) 或 类名.mro()
  • MRO顺序

    image-20250617194842568

中间件

在每次请求和响应之间执行的方法:

1
2
3
4
5
__init__():初始化中间件时,自动调用一次

process_request():请求前

process_response():响应前

后端服务的项目架构

数据存储服务:mysql

缓存服务:Redis

异步服务:Celery

消息队列:RabbitMQ、Redis、Kafka

文件存储服务:FastDFS

全文检索:Elasticsearch

部署:Nginx(负载均衡)+uwsgi

定时任务:Crontab

同源

需要协议,域名,端口号都相同

CORS

因为前端与后端不同源,使用cors实现跨域,设置白名单,前端可以获取后端的数据

短信发送

容联云网站,下载python版本的demo

短信验证码业务流程:

前端发送一个axios请求,包括手机号,验证码,图形验证码的UUID

后端接收请求参数,包括手机号,验证码,图形验证码的UUID

业务逻辑:验证参数,验证图片验证码,生成短信验证码,保存短信验证码,发送短信验证码

响应:返回响应{‘code’:0, ‘errmsg’:‘ok’}

管道技术

通过一个队列,一次同时包含多个请求,降低服务器频繁调用radis,提高执行效率

异步Celery

  • 生产者-消费者模式,使用消息队列(中间人:broker)分割(解耦)协调生产者和消费者
  • 消息队列不执行任务,存储和转发任务
  • Celery可以实现存储转发任务,也可以实现执行任务

记住密码

是设置session过期时间,不是浏览器的记住账号和密码

itsdangerous数据加密

itsdangerous对openid进行加密和解密。