python开发7Django
Session
- Django项目默认启动Session。可以保存在数据库或内存,也可以混合存储
- 将session放入redis,放入内存
面向对象
-
三大特性
封装:把属性和方法捆绑在一起,对外隐藏实现细节(类(Class)方法来封装属性和方法)
继承:允许一个子类获取父类的属性和方法,同时可以扩展和修改它们(子类重写方法,多继承(class view(a, b)))
多态:同一操作作用于不同的类的实例,会有不同的执行结果(使用相同方法调用不同类的实例,结果不同)
路由匹配类视图逻辑
客户端发出请求,到服务器的总路由,再分配到子路由上,get()和post()方法发出响应到客户端
多继承
-
一个类可以同时继承多个父类,遵循MEO(方法解析顺序)
1
可用(类名.___mro__) 或 类名.mro()
-
MRO顺序
中间件
在每次请求和响应之间执行的方法:
1 | __init__():初始化中间件时,自动调用一次 |
后端服务的项目架构
数据存储服务: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进行加密和解密。
评论


