Code Monkey home page Code Monkey logo

backend's Introduction

Cat Food Backend

codecov

Django CI/CD Workflow

目录结构

.
|─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               # 说明

如何开始

请先仔细阅读 如何获取和提交源码

配置 Docker 和 Docker Compose

使用 Docker 环境开发

注意!

  • 不要滥用 sudo

  • 遇到运行 docker 的权限问题请先尝试 Post-installation steps for Linux 的解决办法

  • 在本地开发分支中执行以下操作

  • 所有对于 catfood 下文件的修改都与本地目录同步

  • DB 和对象存储(MinIO)的数据会持久化存储在 .persistence 下,删除请使用

    # sudo rm -rf .persistence #

启动开发 Web 服务器

进入代码根目录,运行

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 中运行指令

在项目目录下

docker-compose -f ./docker-compose.yml.dev exec <service_name> /bin/bash

关闭 Web 服务器

docker-compose -f ./docker-compose.yml.dev down

了解其他配置可以阅读 Dockerfile.web.devdocker-compose.yml.dev

VSCode 使用建议

VSCode Docker

Docker

打开 Docker 的 Shell

VSCode Docker

VSCode Remote

Remote - Containers

Remote Dev in Docker

点击左下角 >< 图标,选择 Attach to Running Container

VSCode Remote Container

用户系统使用方式

注册用户

预留了 localhost:8000/api/v1/user/university/localhost:8000/api/v1/user/school/ 两个接口来设置大学和学院,在注册用户之前请确认是否有大学和学院(用户的外码)。

对university表进行了修改,现在里面包含三个字段 university_idofficial_iduniversity_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]

backend's People

Contributors

darkkowalski avatar fwdarling avatar major-333 avatar moreonenight avatar mrcopytuo avatar xiongnemo avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.