|
@@ -1,158 +1,145 @@
|
|
|
-# 同趣U (InterestU) - 大学生兴趣社交平台 [Backend]
|
|
|
+# 同趣U (InterestU) - 大学生兴趣社交平台
|
|
|
|
|
|
[](https://opensource.org/licenses/MIT)
|
|
|
<!-- 可根据实际情况添加CI/CD等徽章 -->
|
|
|
|
|
|
-**同趣U (InterestU)** 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。本项目是“同趣U”应用的后端服务部分。
|
|
|
+**同趣U (InterestU)** 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。
|
|
|
|
|
|
-## 项目背景
|
|
|
+## 项目组成
|
|
|
|
|
|
-在当前的大学校园中,学生们拥有多元的兴趣和强烈的社交需求,但常常面临以下痛点:
|
|
|
+本项目仓库包含以下主要部分:
|
|
|
|
|
|
-* **信息不对称:** 难以高效找到与自己有相同小众或特定兴趣的伙伴。
|
|
|
-* **平台错位:** 现有通用社交平台难以满足纯粹基于兴趣的连接需求。
|
|
|
-* **连接障碍:** 主动发起线下或线上连接存在一定的社交压力。
|
|
|
-* **活动分散:** 校园内外的兴趣活动信息零散,不易发现和组织。
|
|
|
+* **`tongqu_backend_v2/`**: Django后端服务项目。
|
|
|
+* **`同趣U.html`**: (早期的静态页面原型)
|
|
|
|
|
|
-“同趣U”后端服务旨在解决这些问题,为前端App提供稳定、高效、安全的接口支持。
|
|
|
|
|
|
-## 核心目标 (后端)
|
|
|
+## 后端项目 (`tongqu_backend_v2/`)
|
|
|
|
|
|
-* **用户管理:** 提供安全可靠的用户注册、登录、资料管理等功能。
|
|
|
-* **兴趣匹配:** 支持基于兴趣标签的数据存储与检索,为前端实现精准匹配提供基础。
|
|
|
-* **互动支持:** 为私信、小组、活动等社交场景提供API接口。
|
|
|
-* **数据持久化:** 使用PostgreSQL数据库安全存储用户信息、兴趣数据、社交关系等。
|
|
|
-* **API接口:** 提供清晰、规范的RESTful API供前端App调用。
|
|
|
-
|
|
|
-## 主要功能 (当前进度及规划)
|
|
|
+这是“同趣U”应用的后端服务部分,基于Django和Django REST framework构建。
|
|
|
|
|
|
-### 已实现/进行中 (示例,请根据你的实际进度修改)
|
|
|
+### 项目背景 (后端)
|
|
|
|
|
|
-* **用户系统 (v0.1):**
|
|
|
- * 基于Django自定义User模型,包含手机号、头像、简介、学校等字段。
|
|
|
- * 使用Django REST framework 和 djangorestframework-simplejwt 实现用户注册、登录(JWT认证)、获取用户信息的API接口。
|
|
|
- * 配置PostgreSQL数据库连接。
|
|
|
+为前端App提供稳定、高效、安全的接口支持,解决大学生在兴趣社交中遇到的信息不对称、平台错位、连接障碍、活动分散等痛点。
|
|
|
|
|
|
-### 规划中
|
|
|
+### 核心目标 (后端)
|
|
|
|
|
|
-* **兴趣标签系统:**
|
|
|
- * 用户兴趣标签的创建、选择、展示。
|
|
|
- * 基于兴趣标签的推荐算法初步设计。
|
|
|
-* **匹配与发现:**
|
|
|
- * 实现基于共同兴趣的用户推荐API。
|
|
|
-* **即时通讯 (私信):**
|
|
|
- * WebSocket基础搭建或选择第三方服务。
|
|
|
- * 私信消息存储与API接口。
|
|
|
-* **兴趣圈子/小组:**
|
|
|
- * 小组创建、加入、管理API。
|
|
|
- * 小组内动态发布与查看API。
|
|
|
-* **活动发布与匹配:**
|
|
|
- * 活动创建、报名、管理API。
|
|
|
-* **校园认证流程。**
|
|
|
-* **更完善的错误处理、日志记录和单元测试。**
|
|
|
-
|
|
|
-## 技术栈
|
|
|
+* **用户管理与认证:** 提供安全可靠的用户注册、登录、资料管理、JWT认证等功能。
|
|
|
+* **兴趣系统:** 允许用户定义和关联兴趣标签,为匹配提供基础。
|
|
|
+* **小组/圈子系统:** 支持用户创建、加入、管理兴趣小组,并在组内互动。
|
|
|
+* **内容发布:** 允许用户在小组内发布帖子/动态。
|
|
|
+* **匹配与发现:** 基于兴趣等因素推荐用户。
|
|
|
+* **数据持久化:** 使用PostgreSQL数据库。
|
|
|
+* **API接口:** 提供清晰、规范的RESTful API供前端App调用。
|
|
|
|
|
|
-* **后端框架:** Python 3.x, Django, Django REST framework
|
|
|
+### 主要功能 (当前进度)
|
|
|
+
|
|
|
+* **用户系统 (v0.2):**
|
|
|
+ * 自定义用户模型 (`CustomUser`),包含邮箱、手机号、昵称、头像、简介、学校等。
|
|
|
+ * 使用 `CustomUserManager` 处理用户创建。
|
|
|
+ * **API (DRF + SimpleJWT):**
|
|
|
+ * 用户注册 (含头像上传,返回JWT)。
|
|
|
+ * 用户登录 (邮箱+密码,返回JWT Access/Refresh Token)。
|
|
|
+ * 刷新Access Token。
|
|
|
+ * 获取/更新当前登录用户个人资料 (需认证,支持头像和兴趣标签更新)。
|
|
|
+* **兴趣标签系统 (v0.1):**
|
|
|
+ * `InterestTag` 模型。
|
|
|
+ * `CustomUser` 与 `InterestTag` 多对多关联。
|
|
|
+ * Admin后台管理兴趣标签。
|
|
|
+ * **API:**
|
|
|
+ * 获取兴趣标签列表 (只读)。
|
|
|
+ * 获取单个兴趣标签详情 (只读)。
|
|
|
+* **匹配与发现 (v0.1 - 初步):**
|
|
|
+ * **API:**
|
|
|
+ * 获取与当前登录用户有共同兴趣的推荐用户列表 (需认证,显示共同兴趣标签)。
|
|
|
+* **兴趣圈子/小组系统 (v0.2):**
|
|
|
+ * `Group` 模型 (名称、描述、封面、创建者、兴趣标签等)。
|
|
|
+ * `Membership` (中间) 模型管理用户与小组的多对多关系 (含加入时间)。
|
|
|
+ * Admin后台管理小组和成员关系。
|
|
|
+ * **API:**
|
|
|
+ * 创建小组 (需认证,创建者自动成为成员并可关联兴趣标签,支持封面上传)。
|
|
|
+ * 获取小组列表 (公开可读)。
|
|
|
+ * 获取单个小组详情 (公开可读)。
|
|
|
+ * 用户加入小组 (需认证)。
|
|
|
+ * 用户退出小组 (需认证)。
|
|
|
+ * 获取当前用户加入的小组列表 (需认证)。
|
|
|
+* **小组内帖子/动态功能 (v0.1):**
|
|
|
+ * `Post` 模型 (关联小组、作者,含标题、内容)。
|
|
|
+ * Admin后台管理帖子。
|
|
|
+ * **API (集成在GroupViewSet及独立的PostViewSet中):**
|
|
|
+ * 在指定小组内创建帖子 (`POST /api/v1/groups/<group_pk>/create-post/`,需认证,作者自动设置为当前用户)。
|
|
|
+ * 获取指定小组内的帖子列表 (`GET /api/v1/groups/<group_pk>/posts/`,需认证)。
|
|
|
+ * 获取所有帖子列表 (`GET /api/v1/posts/`,需认证)。
|
|
|
+ * 获取单个帖子详情 (`GET /api/v1/posts/<post_pk>/`,需认证)。
|
|
|
+ * 更新自己的帖子 (`PUT/PATCH /api/v1/posts/<post_pk>/`,需认证且为作者)。
|
|
|
+ * 删除自己的帖子 (`DELETE /api/v1/posts/<post_pk>/`,需认证且为作者)。
|
|
|
+ * 通过 `/api/v1/posts/` 路径创建帖子的权限已限制为管理员,并提示使用小组接口。
|
|
|
+
|
|
|
+### 技术栈 (后端)
|
|
|
+
|
|
|
+* **后端框架:** Python 3.x, Django 5.2.x, Django REST framework
|
|
|
* **数据库:** PostgreSQL
|
|
|
* **认证:** JWT (JSON Web Tokens) via djangorestframework-simplejwt
|
|
|
+* **图片处理:** Pillow
|
|
|
* **Web服务器 (部署时):** Gunicorn (或 uWSGI)
|
|
|
* **反向代理 (部署时):** Nginx
|
|
|
* **版本控制:** Git
|
|
|
|
|
|
-## 环境搭建与运行
|
|
|
+### 环境搭建与运行 (后端 `tongqu_backend_v2/` 目录内)
|
|
|
|
|
|
-### 前提条件
|
|
|
-
|
|
|
-* Python 3.8+
|
|
|
-* PostgreSQL 12+
|
|
|
-* Git
|
|
|
-
|
|
|
-### 本地开发步骤
|
|
|
-
|
|
|
-1. **克隆仓库 (如果已推送到远程):**
|
|
|
+1. **前提条件:**
|
|
|
+ * Python 3.8+
|
|
|
+ * PostgreSQL 12+
|
|
|
+ * Git
|
|
|
+2. **克隆仓库 (如果从远程开始):**
|
|
|
```bash
|
|
|
+ # 如果将 D:\new_projects 作为仓库根,则克隆整个项目
|
|
|
git clone http://git.fmode.cn:3000/0225015/tongquU.git
|
|
|
- cd tongquU
|
|
|
+ cd tongquU/tongqu_backend_v2 # 进入后端项目目录
|
|
|
```
|
|
|
- 或者如果你是在本地新初始化的项目,直接进入项目目录。
|
|
|
-
|
|
|
-2. **创建并激活Python虚拟环境:**
|
|
|
+3. **创建并激活Python虚拟环境:**
|
|
|
```bash
|
|
|
python -m venv venv
|
|
|
- # Windows CMD:
|
|
|
- # venv\Scripts\activate
|
|
|
# Windows PowerShell:
|
|
|
- # .\venv\Scripts\Activate.ps1
|
|
|
+ .\venv\Scripts\Activate.ps1
|
|
|
# Linux/macOS:
|
|
|
# source venv/bin/activate
|
|
|
```
|
|
|
-
|
|
|
-3. **安装依赖:**
|
|
|
- *(建议创建一个 `requirements.txt` 文件)*
|
|
|
+4. **安装依赖:**
|
|
|
```bash
|
|
|
- pip install django djangorestframework djangorestframework-simplejwt psycopg2-binary
|
|
|
- # 如果有 requirements.txt:
|
|
|
- # pip install -r requirements.txt
|
|
|
+ pip install -r requirements.txt
|
|
|
```
|
|
|
-
|
|
|
-4. **配置数据库:**
|
|
|
+5. **配置数据库:**
|
|
|
* 确保PostgreSQL服务正在运行。
|
|
|
- * 在PostgreSQL中创建一个名为 `tongquu_db` (或其他你指定的名字) 的数据库。
|
|
|
- ```sql
|
|
|
- -- (在psql中)
|
|
|
- CREATE DATABASE tongquu_db;
|
|
|
- -- CREATE USER tongquu_user WITH PASSWORD 'your_password'; -- 可选
|
|
|
- -- GRANT ALL PRIVILEGES ON DATABASE tongquu_db TO tongquu_user; -- 可选
|
|
|
- ```
|
|
|
- * 修改项目中的 `tongqu_project/settings.py` 文件,配置 `DATABASES` 部分:
|
|
|
- ```python
|
|
|
- DATABASES = {
|
|
|
- 'default': {
|
|
|
- 'ENGINE': 'django.db.backends.postgresql',
|
|
|
- 'NAME': 'tongquu_db',
|
|
|
- 'USER': 'postgres', # 或者你创建的专用用户
|
|
|
- 'PASSWORD': 'your_postgres_password', # 你的PostgreSQL密码
|
|
|
- 'HOST': 'localhost',
|
|
|
- 'PORT': '5432',
|
|
|
- }
|
|
|
- }
|
|
|
- ```
|
|
|
-
|
|
|
-5. **配置自定义用户模型 (如果尚未完成):**
|
|
|
- * 在 `accounts/models.py` 中定义 `CustomUser`。
|
|
|
- * 在 `tongqu_project/settings.py` 中设置 `AUTH_USER_MODEL = 'accounts.CustomUser'`。
|
|
|
-
|
|
|
+ * 在PostgreSQL中创建一个数据库 (例如 `tongqu_v2_db`)。
|
|
|
+ * 修改 `tongqu_backend_v2/config/settings.py` 文件,配置 `DATABASES` 部分。
|
|
|
6. **进行数据库迁移:**
|
|
|
```bash
|
|
|
- python manage.py makemigrations accounts
|
|
|
+ python manage.py makemigrations
|
|
|
python manage.py migrate
|
|
|
```
|
|
|
-
|
|
|
-7. **创建超级用户 (用于访问Django Admin):**
|
|
|
+7. **创建超级用户:**
|
|
|
```bash
|
|
|
python manage.py createsuperuser
|
|
|
```
|
|
|
-
|
|
|
8. **运行开发服务器:**
|
|
|
```bash
|
|
|
python manage.py runserver
|
|
|
```
|
|
|
服务将在 `http://127.0.0.1:8000/` 启动。
|
|
|
|
|
|
-## API 端点 (示例)
|
|
|
+### API 端点前缀 (后端)
|
|
|
|
|
|
-* **注册:** `POST /api/v1/accounts/register/`
|
|
|
-* **登录 (获取Token):** `POST /api/v1/accounts/login/` (或 `POST /api/v1/accounts/token/`)
|
|
|
-* **刷新Token:** `POST /api/v1/accounts/token/refresh/`
|
|
|
-* **获取/更新用户资料:** `GET/PUT /api/v1/accounts/profile/` (需认证)
|
|
|
+* 所有用户账户相关API: `/api/v1/accounts/`
|
|
|
+* 所有小组相关API: `/api/v1/groups/`
|
|
|
+* 所有帖子直接操作API: `/api/v1/posts/`
|
|
|
+* (兴趣标签API通过 `/api/v1/accounts/tags/` 访问)
|
|
|
|
|
|
-*(更多端点将随功能开发添加)*
|
|
|
+*(更详细的API文档后续会通过Swagger/OpenAPI提供)*
|
|
|
|
|
|
-## 如何贡献 (示例)
|
|
|
+## 如何贡献
|
|
|
|
|
|
+*(保持你之前的贡献说明即可,或者根据需要修改)*
|
|
|
我们欢迎各种形式的贡献!如果您对本项目感兴趣,可以通过以下方式参与:
|
|
|
-
|
|
|
1. **Fork** 本仓库 (如果项目公开)
|
|
|
2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
|
3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
@@ -163,6 +150,4 @@
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
-本项目采用 [MIT许可证](LICENSE.md)。
|
|
|
-
|
|
|
----
|
|
|
+本项目采用 [MIT许可证](LICENSE.md)。
|