diff --git a/README.md b/README.md index 91a8049..ce88a6a 100644 --- a/README.md +++ b/README.md @@ -28,21 +28,54 @@ BlueWhale设计课程是datawhale项目开发团队,基于datawhale社区成 - 组队、修改群昵称 - 熟悉打卡规则 +- 熟悉REST风格系统 +- 熟悉OpenAPI规范 +- 了解Django框架 +- 了解Vue.js框架 - 独立完成数据库安装 - 独立完成代码运营 -- 初步了解代码结构 -### Task01:加入开发项目组和搭建编码环境(2天) -- -### Task02:熟悉datawhale需求和技术架构(2天) -- -### Task03:认领datawhale任务和设计编码(7天) -- -### Task04:前后端对接联调和单元测试(2天) -- -### Task05:datawhale迭代测试和发布(1天) -- +### Task01:熟悉后端代码结构及OpenAPI文档编写(2天) +- 后端代码目录结构 +- 后端RESTful API URL定义 +- 查看已实现的接口及内容 +- 使用[swagger-editor](https://github.com/swagger-api/swagger-editor)编辑接口文档并补充遗漏的接口 + +### Task02:熟悉datawhale需求及编写新API文档(2天) + +- 熟悉用户及权限管理需求 +- 设计用户及权限管理相关RESTful API +- 补充[openapi.yaml](./openapi.yaml)并添加用户及权限管理相关入口 +- 熟悉赛事管理需求 +- 设计赛事管理相关RESTful API +- 补充[openapi.yaml](./openapi.yaml)并添加赛事管理相关入口 + +### Task03:熟悉首页需求并使用Vue实现首页功能(2天) + +- 前端代码目录结构 +- `vue-router`简介 +- `vuex`状态管理 +- 熟悉`vuetify` material design组件库并使用 +- 基于交互图实现首页功能 + +### Task04:开发用户管理后端及前端(4天) + +- [后端]修改已有Model并添加用户属性 +- [后端]实现对应序列化类及View +- [后端]创建URL与View的映射 +- [前端]创建用户列表页及用户详情页 +- [前端]创建用户列表路由及用户详情路由 +- 线上环境部署及集成测试 + +### Task04:开发赛事管理后端及前端(4天) + +- [后端]修改已有Model并添加用户属性 +- [后端]实现对应序列化类及View +- [后端]创建URL与View的映射 +- [前端]创建用户列表页及用户详情页 +- [前端]创建用户列表路由及用户详情路由 +- 线上环境部署及集成测试 #### 参与贡献 diff --git a/bluewhale/Pipfile b/bluewhale/Pipfile index 5a44f6f..805bf8e 100644 --- a/bluewhale/Pipfile +++ b/bluewhale/Pipfile @@ -13,6 +13,3 @@ itsdangerous = "*" [dev-packages] pycodestyle = "*" - -[requires] -python_version = "3.8" diff --git a/bluewhale/Pipfile.lock b/bluewhale/Pipfile.lock index e59be8b..ca16f8b 100644 --- a/bluewhale/Pipfile.lock +++ b/bluewhale/Pipfile.lock @@ -1,12 +1,10 @@ { "_meta": { "hash": { - "sha256": "d2b8551f45b46a39a398a37c34d445febfb8f5c0a693600b0f53e2baf8d55454" + "sha256": "a96628ee8ece0c3f5f8c44fb748f5c11e7fbe3445163718c4c928cf0705717b9" }, "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, + "requires": {}, "sources": [ { "name": "pypi", @@ -18,19 +16,19 @@ "default": { "asgiref": { "hashes": [ - "sha256:5ee950735509d04eb673bd7f7120f8fa1c9e2df495394992c73234d526907e17", - "sha256:7162a3cb30ab0609f1a4c95938fd73e8604f63bdba516a7f7d64b83ff09478f0" + "sha256:92906c611ce6c967347bbfea733f13d6313901d54dcca88195eaeb52b2a8e8ee", + "sha256:d1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78" ], - "markers": "python_version >= '3.5'", - "version": "==3.3.1" + "markers": "python_version >= '3.6'", + "version": "==3.3.4" }, "django": { "hashes": [ - "sha256:169e2e7b4839a7910b393eec127fd7cbae62e80fa55f89c6510426abf673fe5f", - "sha256:c6c0462b8b361f8691171af1fb87eceb4442da28477e12200c40420176206ba7" + "sha256:0604e84c4fb698a5e53e5857b5aea945b2f19a18f25f10b8748dbdf935788927", + "sha256:21f0f9643722675976004eb683c55d33c05486f94506672df3d6a141546f389d" ], "index": "pypi", - "version": "==3.1.6" + "version": "==3.2" }, "django-rest-auth": { "hashes": [ @@ -41,11 +39,11 @@ }, "djangorestframework": { "hashes": [ - "sha256:0209bafcb7b5010fdfec784034f059d512256424de2a0f084cb82b096d6dd6a7", - "sha256:0898182b4737a7b584a2c73735d89816343369f259fea932d90dc78e35d8ac33" + "sha256:6d1d59f623a5ad0509fe0d6bfe93cbdfe17b8116ebc8eda86d45f6e16e819aaf", + "sha256:f747949a8ddac876e879190df194b925c177cdeb725a099db1460872f7c0a7f2" ], "index": "pypi", - "version": "==3.12.2" + "version": "==3.12.4" }, "itsdangerous": { "hashes": [ @@ -98,11 +96,11 @@ "develop": { "pycodestyle": { "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068", + "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef" ], "index": "pypi", - "version": "==2.6.0" + "version": "==2.7.0" } } } diff --git a/images/task00-db-migrate.png b/images/task00-db-migrate.png new file mode 100644 index 0000000..43a53d4 Binary files /dev/null and b/images/task00-db-migrate.png differ diff --git a/images/task00-mariadb-connect.png b/images/task00-mariadb-connect.png deleted file mode 100644 index a7911a9..0000000 Binary files a/images/task00-mariadb-connect.png and /dev/null differ diff --git a/images/task00-mysql-connect.png b/images/task00-mysql-connect.png new file mode 100644 index 0000000..bd91629 Binary files /dev/null and b/images/task00-mysql-connect.png differ diff --git a/images/task00-mysql.png b/images/task00-mysql.png new file mode 100644 index 0000000..ecf7753 Binary files /dev/null and b/images/task00-mysql.png differ diff --git a/images/task00-runserver.png b/images/task00-runserver.png index 907b3b9..627e1cb 100644 Binary files a/images/task00-runserver.png and b/images/task00-runserver.png differ diff --git a/task00.md b/task00.md index 71b25b8..e870045 100644 --- a/task00.md +++ b/task00.md @@ -1,5 +1,5 @@ 本期任务将简介在课程中涉及的各概念、工具及框架。最终通过[环境搭建](#环境搭建)您将能搭建基础的用于开发的环境 -并成功运行示例代码(本期任务假设你已了解数据库、Python、HTTP、HTML、CSS、JavaScript等知识)。 +并成功运行示例代码(本期任务假设你已了解数据库、Python、HTTP、HTML、CSS、JavaScript、git等知识)。 # REST简介 @@ -128,27 +128,32 @@ var app = new Vue({ # 环境搭建 +组队完成后,由队长创建Github新的组织并将团队成员加至组织,然后将代码fork至组织仓库。 +团队成员clone fork后的仓库,如(请替换自己的组织名称): + +`git clone git@github.com:whale-web-team00/whale-web.git` + ## 数据库 -本课程将使用[MariaDB](https://mariadb.org/)作为数据库(MariaDB是MySQL的分支) +本课程将使用[MySQL](https://www.mysql.com/)作为数据库 ### 安装数据库 -(如果你系统中已安装MySQL或MariaDB数据库,可跳过该步骤) +(如果你系统中已安装MySQL数据库,可跳过该步骤) -* Mac (具体步骤请参考[官方博客](https://mariadb.com/resources/blog/installing-mariadb-10-1-16-on-mac-os-x-with-homebrew/)) - - 安装:`brew install mariadb`(前置条件为系统中已经安装brew工具) - - 初始化基础数据库:`mysql_install_db` - - 启动数据库服务:`brew services start mariadb` - - 初始化安全选项:`mariadb-secure-installation` -* Windows: 从官网下载安装包并安装[https://mariadb.org/download/](https://mariadb.org/download/) -* Linux - - Ububtu/Debian: `sudo apt install mariadb-server` - - CentOS/Redhat: `sudo yum install MariaDB-server MariaDB-client` +* Mac (图形界面) + - 从官网下载DMG安装包[https://dev.mysql.com/downloads/mysql/](https://dev.mysql.com/downloads/mysql/) + - 双击并按提示安装 + - 安装完成后,在系统设置最后能够找到MySQL的服务,如下所示 +![system preferences - mysql](./images/task00-mysql.png) -## 初始化数据库 +* Windows: + - 从官网下载MySQL Install for Windows安装包[https://dev.mysql.com/downloads/mysql/](https://dev.mysql.com/downloads/mysql/) + - 双击并按提示安装 -通过root用户连接数据库`mariadb -u root -p`,在SQL终端,运行下列SQL语句: +### 初始化数据库 + +通过root用户连接数据库`/usr/local/mysql/bin/mysql -u root -p`,在SQL终端,运行下列SQL语句: ```sql -- 创建bluewhale用户 @@ -164,24 +169,25 @@ GRANT ALL PRIVILEGES ON bluewhale.* TO 'bluewhale'@'localhost'; FLUSH PRIVILEGES; ``` -断开连接后,使用新用户连接新数据库`mariadb -u bluewhale -p bluewhale`,你将看到连接成功的信息: +断开连接后,使用新用户连接新数据库`/usr/local/mysql/bin/mysql -u bluewhale -p bluewhale`,你将看到连接成功的信息: -![mariadb connect success info](./images/task00-mariadb-connect.png) +![mysql connect success info](./images/task00-mysql-connect.png) ## 后端服务 本课程使用Python作为后端开发语言,使用Django作为后端框架,使用[pipenv](https://github.com/pypa/pipenv) 作为Python的依赖管理工具。 -* 安装Python3.8:如已有Python3.8环境,可跳过此步骤;如有其他版本,可以使用Conda进行安装管理,参见 -[Conda文档](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html) -* 安装pipenv: `pip install --user pipenv` +* 安装Python3.8:如已有Python3.8环境,可跳过此步骤 +* 安装pipenv: `pip install pipenv` * 安装Python依赖包: - - 进入子目录: `cd /bluewhale` + - 进入clone下来的项目目录,进入子目录: `cd bluewhale` - 同步依赖包: `pipenv sync` * 初始化数据表并创建初始用户: - 激活virtualenv: `pipenv shell` (如果已经在conda或其他virtualenv环境中,需要先deactivate) - 初始化数据表:`python manage.py migrate` +![db migrate](./images/task00-db-migrate.png) + - 初始化超级管理员用户:`python manage.py createsuperuser` * 启动后端服务:`python manage.py runserver` @@ -198,7 +204,7 @@ FLUSH PRIVILEGES; * 安装Node.js 版本14 [https://nodejs.org/en/download/](https://nodejs.org/en/download/)。 如已安装其他版本Node.js,可以使用[nvm](https://github.com/nvm-sh/nvm)进行多版本管理 * 安装前端依赖包: - - 进入子目录:`cd /client` + - 进入clone下来的项目目录,进入子目录:`cd client` - 同步依赖包:`npm install` * 启动前端:`npm run serve`