{"id":13597896,"url":"https://github.com/caoqianming/django-vue-admin","last_synced_at":"2025-04-10T05:33:54.862Z","repository":{"id":41947728,"uuid":"256214961","full_name":"caoqianming/django-vue-admin","owner":"caoqianming","description":"基于RBAC模型权限控制的中小型应用的基础开发平台,前后端分离,后端采用django+django-rest-framework,前端采用vue+ElementUI,移动端采用uniapp+uView(可发布h5和小程序).","archived":false,"fork":false,"pushed_at":"2025-03-28T07:17:22.000Z","size":3589,"stargazers_count":972,"open_issues_count":2,"forks_count":270,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-28T08:25:25.571Z","etag":null,"topics":["django","django-rest-framework","element-ui","python","rbac","vue","workflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caoqianming.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-16T12:55:54.000Z","updated_at":"2025-03-28T07:26:28.000Z","dependencies_parsed_at":"2023-11-11T03:27:13.130Z","dependency_job_id":"4c824a15-950e-4b2a-bbf4-3dd29643c858","html_url":"https://github.com/caoqianming/django-vue-admin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoqianming%2Fdjango-vue-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoqianming%2Fdjango-vue-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoqianming%2Fdjango-vue-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoqianming%2Fdjango-vue-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caoqianming","download_url":"https://codeload.github.com/caoqianming/django-vue-admin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248163494,"owners_count":21057951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","django-rest-framework","element-ui","python","rbac","vue","workflow"],"created_at":"2024-08-01T17:00:43.015Z","updated_at":"2025-04-10T05:33:49.835Z","avatar_url":"https://github.com/caoqianming.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# 简介\n新增了base分支,base分支只包括后端,其在master分支的后端基础上进行了重新编写,拥有更完善的权限控制、工作流引擎、运维管理、websocket支持并提供多种常用功能集成到utils中.\n\n后期功能变动将以base分支为主,master分支只做兼容性处理,具体可切换至base分支查看\n\n## 下面为master分支介绍\n基于RBAC模型权限控制的中小型应用的基础开发平台,前后端分离,后端采用django+django-rest-framework,前端采用vue+ElementUI,移动端采用uniapp+uView(可发布h5和小程序).\n\nJWT认证,可使用simple_history实现审计功能,支持swagger\n\n内置模块有组织机构\\用户\\角色\\岗位\\数据字典\\文件库\\定时任务\\工作流(已上传大部分代码, 后端代码位于apps/wf)\n\n使用工作流建议数据库用Postgresql, 下面的预览环境因为是用的sqlite因此有些json查询不支持, 使用方法可参考loonflow文档基本是一致, 主要是做了简化\n\n支持功能权限(控权到每个接口)和简单的数据权限（全部、本级及以下、同级及以下、本人等）\n\n欢迎提issue\n\n\n## 部分截图\n![image](https://github.com/caoqianming/django-vue-admin/blob/master/img/ticket.png)\n![image](https://github.com/caoqianming/django-vue-admin/blob/master/img/user.png)\n![image](https://github.com/caoqianming/django-vue-admin/blob/master/img/dict.png)\n![image](https://github.com/caoqianming/django-vue-admin/blob/master/img/task.png)\n\n## 预览地址\n预览地址直接使用的runserver,账户admin,密码admin。请谨慎操作,勿修改密码\n\u003chttp://49.232.29.236:2222/\u003e\n\n## 启动(以下是在windows下开发操作步骤)\n\n\n### django后端\n定位到server文件夹\n\n建立虚拟环境 `python -m venv venv`\n\n激活虚拟环境 `.\\venv\\scripts\\activate`\n\n安装依赖包 `pip install -r requirements.txt`\n\n复制server文件夹下的conf_e.py为conf.py\n根据需要修改里面的数据库连接及DEBUG参数\n\n同步数据库 `python manage.py migrate`\n\n可导入初始数据 `python manage.py loaddata db.json` 或直接使用sqlite数据库(超管账户密码均为admin,每隔一段时间数据库会重置)\n\n创建超级管理员 `python manage.py createsuperuser`\n\n运行服务 `python manage.py runserver 8000` \n\n### vue前端\n定位到client文件夹\n\n安装node.js\n\n安装依赖包 `npm install --registry=https://registry.npmmirror.com`\n\n运行服务 `npm run dev` \n\n### nginx\n本地跑时修改nginx.conf，可显示资源文件\n\n```\nlisten 8012\nlocation /media {\n    proxy_pass http://localhost:8000;\n}\nlocation / {\n    proxy_pass http://localhost:9528;\n}\n```\n\n运行nginx.exe\n\n### 运行\n打开localhost:8012即可访问\n\n接口文档 localhost:8000/api/swagger/\n\n后台地址 localhost:8000/django/admin/\n\n## 部署\n部署时注意修改conf.py\n\n可以前后端分开部署, nginx代理。也可打包之后将前端dist替换server/dist, 然后执行collectstatic\n\n使用gunicorn启动: 进入虚拟环境执行 gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi\n\n如果需要webscoket还需要配置daphne启动，可使用supervisor监控\n\nNginx配置可参考如下:\n```\nserver {\n        listen 2250;\n        client_max_body_size 1024m;\n        location /media/ {\n                alias /home/lighthouse/xx/media/;\n                limit_rate 800k;\n        }\n        location / {\n                alias /home/lighthouse/xx/dist/;\n                index index.html;\n        }\n        location ~ ^/(api|django)/ {\n                set $CSRFTOKEN \"\";\n                if ($http_cookie ~* \"CSRFTOKEN=(.+?)(?=;|$)\") {\n                        set $CSRFTOKEN \"$1\";\n                }\n                proxy_set_header X-CSRFToken $CSRFTOKEN;\n                proxy_pass http://localhost:2251;\n                proxy_pass_header  Authorization;\n                proxy_pass_header  WWW-Authenticate;\n                proxy_set_header Host $host;\n                proxy_set_header X-Real-IP $remote_addr;\n                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        }\n        location /ws/ {\n                proxy_pass http://localhost:2252;\n                proxy_http_version 1.1;\n                proxy_set_header Upgrade $http_upgrade;\n                proxy_set_header Connection \"upgrade\";\n                proxy_redirect off;\n                proxy_set_header Host $host;\n                proxy_set_header X-Real-IP $remote_addr;\n                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n                proxy_set_header X-Forwarded-Host $server_name;\n        }\n\n}\n```\n\n### docker-compose 方式运行\n\n前端 `./client` 和后端 `./server` 目录下都有Dockerfile，如果需要单独构建镜像，可以自行构建。\n\n这里主要说docker-compose启动这种方式。\n\n按照注释修改docker-compose.yml文件。里面主要有两个服务，一个是`backend`后端,一个是`frontend`前端。\n\n默认是用开发模式跑的后端和前端。如果需要单机部署，又想用docker-compose的话，改为生产模式性能会好些。\n\n\n启动\n```\ncd \u003cpath-to-your-project\u003e\ndocker-compose up -d\n```\n\n启动成功后，访问端口同前面的，接口8000端口，前端8012端口，如需改动，自己改docker-compose.yml\n\n如果要执行里面的命令\ndocker-compose exec \u003c服务名\u003e \u003c命令\u003e\n\n举个栗子：\n\n如果我要执行后端生成数据变更命令。`python manage.py makemigrations`\n\n则用如下语句\n\n```\ndocker-compose exec backend python manage.py makemigrations\n```\n\n### 理念\n首先得会使用django-rest-framework, 理解vue-element-admin前端方案\n\n本项目采用前端路由，后端根据用户角色读取用户权限代码返回给前端，由前端进行加载(核心代码是路由表中的perms属性以及checkpermission方法)\n\n后端功能权限的核心代码在server/apps/system/permission.py下重写了has_permission方法, 在APIView和ViewSet中定义perms权限代码\n\n数据权限因为跟具体业务有关,简单定义了几个规则,重写了has_object_permission方法;根据需要使用即可\n\n由于实际情况比较复杂，这里建议根据不同情况自己写drf的permission_class\n\n### 关于定时任务\n使用celery以及django_celery_beat包实现\n\n需要安装redis并在默认端口启动, 并启动worker以及beat\n\n进入虚拟环境并启动worker: `celery -A server worker -l info -P eventlet`, linux系统不用加-P eventlet\n\n进入虚拟环境并启动beat: `celery -A server beat -l info`\n\n### 工作流\n工作流模块参考loonflow的实现可查看其文档(逻辑一样, 感谢loonflow)\n目前大部分代码已上传, 可查看swagger\n\n### 微信群\n愿意交流的话\n可以加QQ群 235665873\n可以加微信群\n![image](http://49.232.29.236:2222/media/wechat_group.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaoqianming%2Fdjango-vue-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaoqianming%2Fdjango-vue-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaoqianming%2Fdjango-vue-admin/lists"}