.
|─catfood # Django Project
| ├─manage.py # CLI 工具
| ├─catfood # Django App,web 入口
| | ├─__init__.py # 标识这是一个 python 包
| | ├─asgi.py # ASGI 兼容支持
| | ├─settings.py # 全局 配置文件,目前为 Debug 模式
| | ├─urls.py # 全局 路由
| | ├─views.py # 本模块 views
| | └wsgi.py # WSGI 兼容
| |
| ├─module0
| ├─module1
| ├─module2
| └─module3 # 其他功能模块,和 /catfood/catfood 平级目录,配置作用于本功能模块
|
├─requirements # python 依赖目录
| ├─dev.txt # 开发环境依赖
| └─prod.txt # 生产环境部署依赖
├─Dockerfile.web.dev # 开发环境 Dockerfile
├─docker-compose.yml # 开发环境 docker compose 配置
└README.md # 说明
请先仔细阅读 如何获取和提交源码
注意!
-
不要滥用 sudo
-
遇到运行 docker 的权限问题请先尝试 Post-installation steps for Linux 的解决办法
-
在本地开发分支中执行以下操作
-
所有对于
catfood
下文件的修改都与本地目录同步 -
DB 和对象存储(MinIO)的数据会持久化存储在
.persistence
下,删除请使用# sudo rm -rf .persistence #
进入代码根目录,运行
USER_ID=`id -u` GROUP_ID=`id -g` MINIO_ADDRESS=<endpoint that can be accessed both from your browser and web container> docker-compose -f ./docker-compose.yml.dev up
你可以手动查看自己网卡的 IP
ip addr
或者使用以下脚本匹配第一个可用网卡的 IP
alias myip="ip -4 addr | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1 | head -n 1"
export MINIO_PORT=9000
USER_ID=`id -u` GROUP_ID=`id -g` MINIO_ADDRESS=`myip`:$MINIO_PORT docker-compose -f ./docker-compose.yml.dev up
不要关闭终端,使用代码编辑器修改代码
在 http://127.0.0.1:8000
可以访问 Web API,本地文件保存时会自动刷新服务器
当 requirements
下的依赖发生变化,请重新构建 docker image:
docker-compose -f ./docker-compose.yml.dev build
或者:
docker-compose -f ./docker-compose.yml.dev up --build
在项目目录下
docker-compose -f ./docker-compose.yml.dev exec <service_name> /bin/bash
docker-compose -f ./docker-compose.yml.dev down
了解其他配置可以阅读 Dockerfile.web.dev
和 docker-compose.yml.dev
点击左下角 ><
图标,选择 Attach to Running Container
预留了 localhost:8000/api/v1/user/university/
和 localhost:8000/api/v1/user/school/
两个接口来设置大学和学院,在注册用户之前请确认是否有大学和学院(用户的外码)。
对university表进行了修改,现在里面包含三个字段 university_id
,official_id
,university_name
添加了字段 official_id
,用于表示官方编号系统对大学的编号。
- 类形式:
permission_classes = [AllowAny]
- 装饰器形式:
@permission_classes([AllowAny])
- 类形式:
authentication_classes = [CatfoodAuthentication]
permission_classes = [IsTeacher|IsChargingTeacher]
- 装饰器形式:
@authentication_classes([CatfoodAuthentication])
@permission_classes([IsTeacher|IsChargingTeacher])
这是只允许教师(即普通教师和责任教师)访问的情形,其他以此类推。如果需要更进一步的逻辑判断,可以使用request.user
获取发起请求的用户。例如request.user.user_id
可以获得此用户的id。
可选权限类:[IsStudent|IsTeachingAssistant|IsTeacher|IsChargingTeacher]