Нет описания

0225015 572b5d4bd2 Docs: Update README.md with current project progress (User, Tag, Group, Post APIs) 1 месяц назад
tongqu_backend_v2 4c3e28ec4f Feat: Implement Post CRUD APIs with author permissions 1 месяц назад
.gitignore 0d29350431 Initialize TongquU project with backend and static assets 1 месяц назад
README.md 572b5d4bd2 Docs: Update README.md with current project progress (User, Tag, Group, Post APIs) 1 месяц назад
同趣U.html f8823699eb Initial commit of tongquU project (backend and static files) 1 месяц назад

README.md

同趣U (InterestU) - 大学生兴趣社交平台

同趣U (InterestU) 是一款专为在校大学生设计的移动社交应用,旨在帮助他们基于共同的兴趣爱好轻松发现伙伴、组织活动、拓展社交圈,让大学生活更加丰富多彩。

项目组成

本项目仓库包含以下主要部分:

  • tongqu_backend_v2/: Django后端服务项目。
  • 同趣U.html: (早期的静态页面原型)

后端项目 (tongqu_backend_v2/)

这是“同趣U”应用的后端服务部分,基于Django和Django REST framework构建。

项目背景 (后端)

为前端App提供稳定、高效、安全的接口支持,解决大学生在兴趣社交中遇到的信息不对称、平台错位、连接障碍、活动分散等痛点。

核心目标 (后端)

  • 用户管理与认证: 提供安全可靠的用户注册、登录、资料管理、JWT认证等功能。
  • 兴趣系统: 允许用户定义和关联兴趣标签,为匹配提供基础。
  • 小组/圈子系统: 支持用户创建、加入、管理兴趣小组,并在组内互动。
  • 内容发布: 允许用户在小组内发布帖子/动态。
  • 匹配与发现: 基于兴趣等因素推荐用户。
  • 数据持久化: 使用PostgreSQL数据库。
  • API接口: 提供清晰、规范的RESTful API供前端App调用。

主要功能 (当前进度)

  • 用户系统 (v0.2):
    • 自定义用户模型 (CustomUser),包含邮箱、手机号、昵称、头像、简介、学校等。
    • 使用 CustomUserManager 处理用户创建。
    • API (DRF + SimpleJWT):
      • 用户注册 (含头像上传,返回JWT)。
      • 用户登录 (邮箱+密码,返回JWT Access/Refresh Token)。
      • 刷新Access Token。
      • 获取/更新当前登录用户个人资料 (需认证,支持头像和兴趣标签更新)。
  • 兴趣标签系统 (v0.1):
    • InterestTag 模型。
    • CustomUserInterestTag 多对多关联。
    • 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/ 目录内)

  1. 前提条件:
    • Python 3.8+
    • PostgreSQL 12+
    • Git
  2. 克隆仓库 (如果从远程开始):

    # 如果将 D:\new_projects 作为仓库根,则克隆整个项目
    git clone http://git.fmode.cn:3000/0225015/tongquU.git
    cd tongquU/tongqu_backend_v2 # 进入后端项目目录
    
  3. 创建并激活Python虚拟环境:

    python -m venv venv
    # Windows PowerShell:
    .\venv\Scripts\Activate.ps1
    # Linux/macOS:
    # source venv/bin/activate
    
  4. 安装依赖:

    pip install -r requirements.txt
    
  5. 配置数据库:

    • 确保PostgreSQL服务正在运行。
    • 在PostgreSQL中创建一个数据库 (例如 tongqu_v2_db)。
    • 修改 tongqu_backend_v2/config/settings.py 文件,配置 DATABASES 部分。
  6. 进行数据库迁移:

    python manage.py makemigrations
    python manage.py migrate
    
  7. 创建超级用户:

    python manage.py createsuperuser
    
  8. 运行开发服务器:

    python manage.py runserver
    

    服务将在 http://127.0.0.1:8000/ 启动。

API 端点前缀 (后端)

  • 所有用户账户相关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')
  4. 将您的更改推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

请确保您的代码遵循项目的编码规范,并添加必要的测试。

许可证

本项目采用 MIT许可证