**引言:为什么选择 Django-Vue-Admin?**
你是否还在为重复造轮子而苦恼?
Django-Vue-Admin 是一个基于 Django + Vue3 前后端分离的开源后台管理系统,内置 RBAC 权限管理、代码生成器、监控日志等核心模块,能帮你节省 70% 的开发时间!
本文将手把手教你如何二次开发,30 分钟实现一个企业级工单管理系统,并分享高效开发技巧!
一、项目简介与技术栈
- 核心功能:RBAC 权限控制、代码生成、API 文档自动生成、数据可视化
- 技术架构 :
- 前端:Vue3 + TypeScript + Element Plus
- 后端:Django3 + Django REST Framework + JWT
- 数据库:MySQL/PostgreSQL/SQLite
- GitHub 地址 :https://github.com/liqianglog/django-vue-admin(Star 3.5k+)
**二、环境准备(5分钟搞定)**
1、克隆项目:
git clone https://github.com/liqianglog/django-vue-admin.git
cd django-vue-admin
2、安装依赖:
后端
pip install -r requirements.txt
前端
cd frontend
npm install
3、初始化数据库
python manage.py migrate
三、项目结构解析
后端目录 (/backend
)
├── apps
│ ├── system # 权限模块
│ └── monitor # 日志监控
├── dva.py # 项目配置
└── urls.py # 路由入口
前端目录 (/frontend
)
├── src
│ ├── api # 接口定义
│ ├── views # 页面组件
│ └── router # 路由配置
四、二次开发实战:工单系统
目标:新增工单管理模块(CRUD + 状态流转)
步骤 1:后端开发(Django)
-
创建应用:
python manage.py startapp ticket
-
定义模型 (
ticket/models.py
):from django.db import models class Ticket(models.Model): title = models.CharField("工单标题", max_length=100) content = models.TextField("工单内容") STATUS_CHOICES = ( ('open', '待处理'), ('progress', '处理中'), ('closed', '已关闭') ) status = models.CharField("状态", max_length=20, choices=STATUS_CHOICES, default='open') creator = models.ForeignKey('system.User', on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True)
-
注册到 Admin (
ticket/admin.py
):from django.contrib import admin from .models import Ticket @admin.register(Ticket) class TicketAdmin(admin.ModelAdmin): list_display = ['title', 'status', 'creator']
-
编写 API 接口 (
ticket/views.py
):from rest_framework.viewsets import ModelViewSet from .models import Ticket from .serializers import TicketSerializer class TicketViewSet(ModelViewSet): queryset = Ticket.objects.all() serializer_class = TicketSerializer
**步骤 2:前端开发(Vue3)**
-
新增页面组件 (
frontend/src/views/ticket/List.vue
):html<template> <el-table :data="tableData"> <el-table-column prop="title" label="标题" /> <el-table-column prop="status" label="状态"> <template #default="{ row }"> <el-tag :type="statusTag[row.status]">{{ row.status }}</el-tag> </template> </el-table-column> </el-table> </template> <script setup> import { ref } from 'vue' import { getTicketList } from '@/api/ticket' const tableData = ref([]) const statusTag = { open: 'warning', progress: 'primary', closed: 'success' } getTicketList().then(res => tableData.value = res.data) </script>
-
添加路由配置 (
frontend/src/router/modules/ticket.js
):javascriptexport default { path: '/ticket', component: Layout, children: [{ path: 'list', name: 'TicketList', component: () => import('@/views/ticket/List.vue'), meta: { title: '工单管理', icon: 'document' } }] }

五、高级技巧:提升开发效率
-
代码生成器:使用内置工具自动生成 CRUD 代码
bashpython manage.py gen app_name --model=ModelName
-
权限控制 :在
system/menu
中配置页面权限 -
接口调试 :访问
http://localhost:8000/api/docs/
查看 Swagger 文档
**六、部署上线(Docker + Nginx)**
bash
# 后端 Dockerfile
FROM python:3.9
RUN pip install gunicorn
COPY . /app
WORKDIR /app
CMD ["gunicorn", "dva.wsgi:application", "--bind", "0.0.0.0:8000"]
bash
# Nginx 配置
server {
listen 80;
location /api {
proxy_pass http://backend:8000;
}
location / {
root /frontend/dist;
try_files $uri $uri/ /index.html;
}
}
七、总结与资源
- 本文代码仓库 :https://github.com/yourname/django-vue-admin-demo
- 扩展学习 :
- 官方文档:Django-Vue-Admin Docs
- Vue3 实战课程:慕课网《Vue3 + TS 仿知乎专栏》
立即 Star 项目并开始你的高效开发之旅吧! 🚀
**关注我的 CSDN 主页,获取更多全栈开发实战教程!** 🔥