从零开始搭建django前后端分离项目 系列一(技术选型)
前言
最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析、报表数据查询、GIS地理化展示、任务监控管理。由于页面功能较复杂,所以采用前后端分离方式开发。前端采用webpack+vue+vue-router+axios技术栈,后端用django进行开发。从搭建到上线,整个项目前前后后花了差不多一个月时间,中途也遇到一些问题,不过还好都解决了。由于是个人项目,所以我打算把源码贡献出来大家一起讨论学习。
源代码
后端:https://github.com/dotafeiying/myproject
前端:https://github.com/dotafeiying/appfont
关于技术选型
由于页面交互较多,所以整个项目采用前后端分离方式开发。使用Vue.js作为前端框架,代替Django本身较为孱弱的模板引擎,Django则作为服务端提供api接口,使得前后端实现完全分离,更适合单页应用的开发构建。
使用框架
前端:
webpack + vue + axios + element-ui + iview + zui + jquery
后端:
django + celery
数据库:
mysql + redis
数据分析:
impala + pandas + sklearn
项目目录
前端
后端
实现的功能
1、文件上传预览
2、异步任务执行
3、websocket实现实时进度
4、表格分页
5、excel文件动态导出
6、pandas数据分析
7、impala大数据实时查询分析
8、KMeans、DBSCAN聚类分析
9、距离计算算法优化
10、GIS地图展示
11、websocket实现实时进度和动态渲染
12、百度地图批量经纬度转换(服务端实现)
13、历史数据流式查询,解决数据量过大问题
14、树组件懒加载,改善用户体验
15、excel文件流式导出
16、celery异步任务监控管理,websocket实时监控
17、django后台管理
18、项目部署nginx+uwsgi+django+centos7.5
效果图:
文件上传前进行数据核查和预览
异步任务执行和实时进度
表格分页
海量点聚类分析和GIS展示
历史数据流式查询和树节点懒加载
异步任务实时监控和管理