Django项目中的遗留问题
需要补充说明的问题
-
注册模型管理类时如何去掉重复代码(x)
- 反射(自省)
- getattr / setattr
- inspect.getmembers / ismodule / isclass / isfunction
-
对接亚马逊S3存储静态资源(x)
-
多对多关系的处理(x)
- 有关联查询的地方就有可能出现1+N查询问题,严重影响性能
- 多对一、一对一外键:
- queryset.select_related(‘user’, ‘district’)
- 多对多外键:
- query.prefetch_related(’…’)
- query.prefetch_related(Prefecth(’…’, queryset=…))
-
Celery的高级用法
- 调用异步任务:delay / apply_async
- 签名:signature / s —> queue / countdown / expires / serializer / queue
- 原语:group / chain
- 路由:celery -A … worker -Q queue1,queue2
- 持久化结果:django-celery-results / django-db
- 定时任务:django-celery-beat
-
关于日志的补充说明
- https://zhuanlan.zhihu.com/p/27363484
-
项目上线流程说明
- 上线前的检查工作
- 物理架构
- 版本控制
- uWSGI
- Nginx
- HTTPS
- 域名解析
- 进程管理
- 高并发架构
尚未讲解的问题
-
如何解决跨域访问数据的问题(x)
- 同源策略:协议相同、域名相同、端口相同
- 三方库:django-cors-headers
-
多数据库的配置(x)
- DATABASE_ROUTERS = [ … ]
- db_for_read / db_for_write
-
WebSocket的应用
-
单元测试和视图函数的测试
-
访问控制的两种方式ACL和RBAC
-
项目的虚拟化部署
-
虚拟化容器:Docker
-
安装Doker
- 更新底层库:yum update
- 移除旧版本:yum erase -y docker docker-io docker-common docker-engine
- 安装YUM工具:yum install -y yum-utils
- 添加YUM仓库:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装依赖项:yum install -y device-mapper-persistent-data lvm2
- 安装Docker社区版:yum install -y docker-ce
- 启动Docker:systemctl start docker
-
Docker相关命令
-
下载镜像:docker pull nginx:latest
-
查看镜像:docker images
-
删除镜像:docker rmi
-
创建和运行容器:docker run -d -p 80:80 --name myws nginx:latest
-
删除容器:docker rm myws2 / docker rm -f myws3
-
查看运行中的容器:docker ps
-
停止容器:docker stop myws
-
启动容器:docker start myws
-
查看所有容器:docker container ls -a
-
数据卷操作:
docker run -d -p 80:80
-v /root/code/html:/usr/share/nginx/html
–name myws nginx:latest -
创建MySQL容器(多实例):
docker run -d -p 3306:3306 --name mysql571
-v /root/mysql/data1:/var/lib/mysql
-v /root/mysql/log1:/var/log
-e “MYSQL_ROOT_PASSWORD=123456” mysql:5.7.30docker run -d -p 3308:3306 --name mysql572
-v /root/mysql/data2:/var/lib/mysql
-v /root/mysql/log2:/var/log
-e “MYSQL_ROOT_PASSWORD=123456” mysql:5.7.30 -
创建Redis容器
docker run -d -p 54321:6379 --name redis-master
redis:5.0.5 redis-server --requirepass 1Qaz2Wsx -
进入容器:docker exec -it redis-master /bin/bash
-
网络操作:
-
-
-
接口文档的撰写
- 使用Swagger自动生成接口文档
- pip install django-rest-swagger
- doc_view = get_swagger_view(title=‘招聘网站项目接口文档’)
- path(‘docs/’, doc_view)
- REST_FRAMEWORK = {‘DEFAULT_SCHEMA_CLASS’: ‘rest_framework.schemas.coreapi.AutoSchema’}
- 在线接口文档撰写平台
- YAPI
- RAP2
- 使用Swagger自动生成接口文档