基于 Django REST Framework 和 Vue 3 的前后端分离房屋租赁管理系统。项目包含前台用户端、后台管理端、示例数据库、上传资源、CI 构建与安全扫描流程。
| 层级 | 技术 |
|---|---|
| 前端 | Vue 3、Vite、TypeScript、Pinia、Vue Router、Ant Design Vue、Axios |
| 后端 | Python、Django、Django REST Framework、django-cors-headers |
| 数据库 | MySQL,测试环境可用 SQLite |
| 构建 | npm、PyInstaller、GitHub Actions |
| 安全扫描 | Gitleaks、Bandit、pip-audit、npm audit、Dependabot |
.
├── .github/workflows/ # CI、构建、发布和安全扫描 workflow
├── doc/ # 论文、设计图、部署材料等项目资料
├── server/ # Django 后端
│ ├── ai/ # AI 对话接口
│ ├── myapp/ # 业务模型、接口、认证、权限和测试
│ ├── server/ # Django 项目配置
│ └── upload/ # 示例上传资源
├── web/ # Vue 前端
├── HousingRentalManagementSystem.sql
├── MySQLBackup.sql
├── .env.example
├── .gitleaks.toml
└── SECURITY.md
| 服务 | 默认地址 |
|---|---|
| 前台 | http://localhost:9000/index/portal |
| 后台 | http://localhost:9000/admin |
| 后端接口 | http://127.0.0.1:8000 |
示例账号来自仓库 SQL 数据,导入前请确认不会覆盖本地已有数据。
| 类型 | 用户名 | 密码 | 说明 |
|---|---|---|---|
| 管理员 | admin |
admin |
可访问后台全部管理功能 |
| 演示账号 | admin123 |
admin123 |
可读取后台数据,写操作会被限制 |
| 普通用户 | test123 |
test123 |
可访问前台用户功能 |
git clone https://github.com/Matrtex/HousingRentalManagementSystem.git
cd HousingRentalManagementSystem
如需本地代理:
git -c http.proxy=http://127.0.0.1:10808 -c https.proxy=http://127.0.0.1:10808 clone https://github.com/Matrtex/HousingRentalManagementSystem.git
先创建数据库:
CREATE DATABASE IF NOT EXISTS HousingRentalManagementSystem
DEFAULT CHARSET utf8
COLLATE utf8_general_ci;
导入示例数据:
mysql -h 127.0.0.1 -u root -p HousingRentalManagementSystem < HousingRentalManagementSystem.sql
cd server
python -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
设置本地环境变量:
$env:DJANGO_SECRET_KEY = "local-dev-secret-key"
$env:DJANGO_DEBUG = "true"
$env:DB_NAME = "HousingRentalManagementSystem"
$env:DB_USER = "root"
$env:DB_PASSWORD = "your-db-password"
$env:DB_HOST = "127.0.0.1"
$env:DB_PORT = "3306"
启动服务:
python manage.py runserver
说明:.env.example 是配置模板。当前 Django 项目不会自动读取 .env 文件,如果需要 .env 自动加载,请在运行环境、进程管理器或容器中显式注入环境变量。
cd web
npm ci
npm run dev
前端默认通过 VITE_API_BASE_URL 访问后端,未设置时回退到 http://127.0.0.1:8000。
| 变量名 | 默认值 | 说明 |
|---|---|---|
DJANGO_SECRET_KEY |
unsafe-dev-secret-key-change-me |
Django 密钥,生产环境必须设置真实值 |
DJANGO_DEBUG |
true |
是否开启 Debug,生产环境必须为 false |
DJANGO_ALLOWED_HOSTS |
* |
逗号分隔的允许访问主机,生产环境必须明确配置 |
DJANGO_CSRF_TRUSTED_ORIGINS |
本地开发地址 | 逗号分隔的 CSRF 可信来源 |
CORS_ALLOW_ALL_ORIGINS |
true |
是否允许所有跨域来源,生产环境必须关闭 |
CORS_ALLOWED_ORIGINS |
空 | 逗号分隔的允许跨域来源 |
CORS_ALLOW_CREDENTIALS |
true |
是否允许跨域请求携带凭据 |
CSRF_COOKIE_SECURE |
非 Debug 时默认 true |
CSRF Cookie 是否仅通过 HTTPS 发送 |
SESSION_COOKIE_SECURE |
非 Debug 时默认 true |
Session Cookie 是否仅通过 HTTPS 发送 |
SECURE_SSL_REDIRECT |
false |
是否强制 HTTPS 跳转 |
SECURE_HSTS_SECONDS |
0 |
HSTS 有效秒数 |
SECURE_HSTS_INCLUDE_SUBDOMAINS |
false |
HSTS 是否包含子域 |
SECURE_HSTS_PRELOAD |
false |
是否启用 HSTS preload |
DB_ENGINE |
django.db.backends.mysql |
数据库引擎,测试可设为 django.db.backends.sqlite3 |
DB_NAME |
HousingRentalManagementSystem |
数据库名;SQLite 时可设为 :memory: |
DB_USER |
root |
MySQL 用户名 |
DB_PASSWORD |
local-dev-password |
MySQL 密码 |
DB_HOST |
127.0.0.1 |
MySQL 主机 |
DB_PORT |
3306 |
MySQL 端口 |
DASHSCOPE_API_KEY |
空 | AI 对话接口使用的 DashScope API Key |
| 变量名 | 默认值 | 说明 |
|---|---|---|
VITE_API_BASE_URL |
http://127.0.0.1:8000 |
前端请求后端 API 的基础地址 |
DJANGO_SECRET_KEY、明确 DJANGO_ALLOWED_HOSTS,并禁止 CORS_ALLOW_ALL_ORIGINS=true。后端检查:
cd server
python manage.py check
python manage.py test myapp --verbosity=2
使用 SQLite 快速跑测试:
cd server
$env:DB_ENGINE = "django.db.backends.sqlite3"
$env:DB_NAME = ":memory:"
python manage.py test myapp --verbosity=2
前端构建:
cd web
npm ci
npm run build
本地安全扫描:
python -m bandit -r server -x server/myapp/tests.py -ll
python -m pip_audit -r server\requirements.txt
cd web
npm audit --omit=dev --audit-level=high
Gitleaks 可按 .github/workflows/secret-scan.yml 中的固定版本安装后运行:
gitleaks detect --source . --no-git --config .gitleaks.toml --redact --verbose
| Workflow | 触发条件 | 作用 |
|---|---|---|
Node.js CI |
前端变更或手动触发 | 安装依赖、构建前端并上传 dist |
Django CI |
后端/SQL 变更或手动触发 | 启动 MySQL、导入 SQL、运行 Django 检查和测试 |
Build Server EXE File |
后端/图标变更或手动触发 | Windows 环境下构建后端 EXE |
Secret Scan |
push、PR、手动触发 | 使用 Gitleaks 扫描当前工作树密钥 |
Security Checks |
相关文件变更、定时、手动触发 | Bandit、pip-audit、npm audit 阻断式扫描 |
Build and Release |
v* 标签或手动触发 |
生成前端、后端和 EXE 发布产物 |
Remove old artifacts |
定时或手动触发 | 清理旧 Actions artifacts |
发布标签示例:
git tag v1.0.0
git push origin v1.0.0
检查 MySQL 是否启动、数据库是否已创建、DB_* 环境变量是否与本地一致,并确认已导入 HousingRentalManagementSystem.sql。
如果 DJANGO_DEBUG=false,必须设置真实 DJANGO_SECRET_KEY、明确的 DJANGO_ALLOWED_HOSTS,并设置 CORS_ALLOW_ALL_ORIGINS=false。
确认 VITE_API_BASE_URL 指向后端服务地址,并检查后端 CORS 配置中的 CORS_ALLOWED_ORIGINS 是否包含前端域名。
说明未配置 DASHSCOPE_API_KEY。设置有效 API Key 后重启后端服务。
本项目使用 MIT License。