目录

MiniRedBook(mini小红书)

基于 Django REST Framework 后端 + Vue 3 前端的迷你社交内容平台,作为软件系统设计课程作业。

功能概览

模块 功能
🔐 用户系统 注册、登录(JWT)、个人资料编辑、被封禁用户拦截
📝 笔记发布 创建图文笔记(最多9张 jpg/png 图片,可选)、内容审核流程
📰 社交动态 首页展示已关注用户的最新笔记,按时间倒序
👥 关注系统 关注/取消关注、粉丝计数、防止自关注
🔍 搜索 按关键词模糊匹配笔记标题和正文
❤️ 互动 点赞/取消点赞、评论(500字上限)、收藏笔记
💬 私信 基于关注关系的一对一文字聊天(含时间戳)
🛡️ 管理后台 独立的深色侧边栏后台:用户封禁/解封、笔记审核(通过/驳回)

项目结构

miniRedBook/
├── backend/                 # Django REST Framework 后端
│   ├── config/              # Django 设置、URL 路由、JWT 配置
│   ├── users/               # 用户应用(模型、认证、权限)
│   ├── notes/               # 笔记应用(CRUD、审核、搜索)
│   ├── interactions/        # 互动应用(关注、点赞、评论、收藏)
│   ├── messaging/           # 私信应用
│   ├── media/               # 上传文件存储目录
│   └── manage.py            # Django 管理入口
├── frontend/                # Vue 3 前端
│   └── src/
│       ├── api/             # Axios 实例 + JWT 拦截器
│       ├── stores/          # Pinia 状态管理
│       ├── router/          # Vue Router 路由(含守卫)
│       ├── layouts/         # 布局组件(MainLayout / AdminLayout)
│       ├── components/      # 可复用组件(NoteCard、FollowButton 等)
│       └── views/           # 页面视图(含 admin/ 后台页面)
└── openspec/                # 规格文档

环境要求

  • Python 3.10+
  • Node.js 18+ / npm 9+
  • pip 22+

启动步骤

1. 后端(Django)

# 进入后端目录
cd backend

# 安装依赖
pip install django djangorestframework djangorestframework-simplejwt django-cors-headers Pillow

# 初始化数据库(首次运行)
python manage.py makemigrations
python manage.py migrate

# 创建管理员账号(用于访问管理后台)
python manage.py createsuperuser
# 按提示输入:用户名、邮箱(可跳过)、密码

# 启动开发服务器(默认 http://127.0.0.1:8000)
python manage.py runserver

2. 前端(Vue 3)

# 新开一个终端,进入前端目录
cd frontend

# 安装依赖(首次运行)
npm install

# 启动开发服务器(默认 http://localhost:5173)
npm run dev

3. 访问各端

地址 说明
🌐 用户端 http://localhost:5173 普通用户浏览、发布、互动
🛡️ 管理后台 http://localhost:5173/admin 使用 createsuperuser 创建的账号登录
🔧 API 接口 http://127.0.0.1:8000/api/ Django REST API(浏览器可直接访问)

API 路由一览

POST   /api/users/register/        用户注册
POST   /api/users/login/           用户登录(返回 JWT)
GET    /api/users/me/              获取/更新当前用户资料
GET    /api/users/{id}/            查看指定用户资料
POST   /api/users/{id}/ban/        管理员封禁用户
POST   /api/users/{id}/unban/      管理员解封用户
GET    /api/users/search/?q=       管理员搜索用户

POST   /api/notes/                 创建笔记
GET    /api/notes/                 笔记列表
GET    /api/notes/{id}/            笔记详情
PATCH  /api/notes/{id}/            编辑笔记
DELETE /api/notes/{id}/            删除笔记
GET    /api/notes/search/?q=       搜索笔记
GET    /api/notes/pending/         管理员待审核队列
POST   /api/notes/{id}/approve/    管理员通过笔记
POST   /api/notes/{id}/reject/     管理员驳回笔记

POST   /api/interactions/follows/          关注用户
DELETE /api/interactions/follows/unfollow/  取消关注
GET    /api/interactions/follows/status/    查询关注状态
GET    /api/interactions/follows/feed/      获取关注动态流
POST   /api/interactions/likes/toggle/     切换点赞
GET    /api/interactions/comments/         获取评论
POST   /api/interactions/comments/         发表评论
POST   /api/interactions/bookmarks/toggle/ 切换收藏
GET    /api/interactions/bookmarks/my/     我的收藏

POST   /api/messages/               发送私信
GET    /api/messages/conversation/  对话历史
GET    /api/messages/contacts/      联系人列表

关键配置说明

后端(backend/config/settings.py

  • 数据库:SQLite(backend/db.sqlite3),无需额外配置
  • JWT:access token 有效期 2 小时,refresh token 有效期 7 天
  • CORS:已允许 localhost:5173 跨域访问
  • 媒体文件:上传图片存储在 backend/media/,开发环境自动提供 URL 访问

前端(frontend/src/api/index.js

  • API 基地址http://127.0.0.1:8000/api
  • 401 处理:自动尝试刷新 token,失败则跳转登录页
  • 全局 Loading/Error 提示:已内置在各页面中

审核流程

用户发布笔记 → 状态「审核中」→ 仅作者可见
                ↓
管理员后台审核
            ↙       ↘
      通过 → 已发布    驳回 → 审核未通过 + 驳回原因
      公开可见          作者可见驳回原因
关于
191.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号