HousingRentalManagementSystem

HousingRentalManagementSystem 房屋租赁管理系统

基于 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 可访问前台用户功能

快速启动

1. 准备依赖

2. 克隆仓库

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

3. 初始化数据库

先创建数据库:

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

4. 启动后端

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 自动加载,请在运行环境、进程管理器或容器中显式注入环境变量。

5. 启动前端

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 的基础地址

安全策略

测试和构建

后端检查:

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

CI 和发布

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 是否包含前端域名。

AI 接口返回 503

说明未配置 DASHSCOPE_API_KEY。设置有效 API Key 后重启后端服务。

License

本项目使用 MIT License