基于Django+MySQL+ECharts的可视化大屏开发实战
创作时间:
作者:
@小白创作中心
基于Django+MySQL+ECharts的可视化大屏开发实战
引用
CSDN
1.
https://blog.csdn.net/m0_63190901/article/details/130285529
Big-screen项目说明
这是一个基于Django、MySQL和ECharts的可视化大屏项目。后端采用Django框架,前端使用HTML、CSS和JavaScript,图表控件使用ECharts。项目运行效果如下:
数据来源及处理
数据来源于国家统计局,保存为CSV文件并导入MySQL数据库。在导入前需要对CSV文件进行预处理,删除不必要的行,并在MySQL Workbench中使用Table Data Import Wizard导入。
Django框架
项目、应用的创建及运行
从命令行创建Django项目和应用:
$ django-admin startproject myweb
$ python manage.py startapp myapp
创建后,项目结构如下:
[root@localhost demo]# tree myweb/
myweb/
├── manage.py
├── myweb
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── myapp
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
运行开发服务器:
$ python manage.py runserver 端口号(默认8000)
连接数据库
在myweb/settings.py
中配置数据库连接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydemo', # 数据库的名字,提前在mysql创建
'USER': 'root',
'PASSWORD': '', # 这里填上你的密码
'HOST': 'localhost',
'PORT': '3306',
}
}
模板层
在项目根目录下创建templates
目录,并在settings.py
中配置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
其他核心功能
创建static
目录存放CSS、图片、JS等静态文件,并在settings.py
中配置:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
核心功能代码分析
统计信息展示及管理
信息展示
大屏右下角的图表展示了各年份-月份的失业率调查情况,右上角使用ECharts绘制饼图。如果只需要前端页面,可以直接使用静态数据:
<body>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('main'));
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
top: '0%',
left: 'center'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 15,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 20,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 5.6, name: '全国城镇调查失业率(%)', itemStyle: { color: '#4682B4' } },
{ value: 5.4, name: '全国本地户籍人口城镇调查失业率(%)', itemStyle: { color: '#F4A460' } },
{ value: 18.1, name: '全国16-24岁人口城镇调查失业率(%)', itemStyle: { color: '#FF8C00' } },
{ value: 4.8, name: '全国25-59岁人口城镇调查失业率(%)', itemStyle: { color: '#FFF5EE' } },
{ value: 5.7, name: '31个大城市城镇调查失业率(%)', itemStyle: { color: '#AFEEEE' } }
]
}
]
};
myChart.setOption(option);
</script>
</body>
信息后台管理
右下角图表的"加载更多"功能会跳转到信息统计管理页面。数据从数据库获取,需要在models.py
中定义模型类:
from django.db import models
class UPR(models.Model):
'''自定义表对应的Model类'''
id = models.AutoField(primary_key=True)
time = models.CharField(max_length=45)
uprate_1 = models.CharField(max_length=45)
uprate_2 = models.CharField(max_length=45)
uprate_3 = models.CharField(max_length=45)
def __str__(self):
return "%d:%s:%s:%s:%s" % (self.id, self.time, self.uprate_1, self.uprate_2, self.uprate_3)
class Meta:
db_table = "unemployment"
Ajax异步请求
Ajax是一种通过JavaScript异步发起请求、局部更新页面的技术。具体流程包括:
- 前端页面分区:在HTML中为每个模块划分区域
- 初始化ECharts实例:将初始化工作写在JS文件中
- 使用Ajax传递数据:通过
$.get()
方法请求数据
示例代码:
<script language="javascript" src="static/js/myec.js?version=1.0.2"></script>
$.get(url, [data], [callback])
在视图层编写getData()
函数并配置路由,通过Ajax异步发送请求,并使用setTimeOut()
设置刷新时间。
总结
项目地址:https://github.com/goldikfish/Bigscreen.git
这是一个临时作业项目,用的技术都比较简单,整体效果略显简陋。后续可以考虑使用华为云DLV或Astro轻应用等低代码工具,让项目更具现实意义。
实现方案总结:
- 确定数据来源和格式,存储到MySQL数据库
- 在Django项目中创建应用并定义模型类
- 创建视图函数处理前端请求,返回JSON格式数据
- 前端使用ECharts组件读取数据并更新图表
- 使用Ajax实现前后端异步交互
- 使用JavaScript处理DOM操作实现动态效果
热门推荐
2025年十大免费单机游戏推荐
黑枸杞的正确食用方法(直接吃好还是泡水)
以身铸剑的巫术思维和科学原理
探秘美式咖啡:二战起源到全球风靡的秘诀
近视激光手术后如何正确看书?这份指南请收好
胡萝卜:探寻多样烹饪与健康益处的营养佳蔬
横州市:茉莉香约“三月三” 共度节庆欢乐多
立冬将至,中老年人请注意:1不戴、2不睡、3不做
英国工业革命时期的教育发展
低空经济催生无人机“飞手”考证热 目前操控员就业人才缺口大
前往濑户内海上美丽的小豆岛,搭乘渡轮享受约1小时的航程
阿莫西林和阿司匹林有何区别?一文读懂
人与AI协作的未来:共存还是竞争?
SIM卡网络速度慢?原因及解决方法大揭秘
出租房管理中如何平衡租客需求与房东责任?高康张睿案例分析
项目管理破局措施怎么写
八王之乱爆发的历史背景是什么?一切要追溯到西晋开国时期
道教四大玄门:全真道、正一道、茅山道和闾山道
硬盘分为哪两种类型?固态硬盘VS机械硬盘,实际对比就知道了
一文读懂角膜交联术:术后视力何时提升?需住院吗?注意事项有哪些?
最佳实践示例
大飞机C919最新进展:产能稳步建设,出海持续推进
京东大溶洞:华北神秘自然奇观探秘之旅
入春后经常吃红香椿的人,不出3个月,身体或许会有4个变化
如何选择适合的鼠标垫?(关键要点帮助你找到最佳选择)
固态电池|全固态电池有望27年装车,把握电池、材料、设备、资源端投资机会
桃花的花语与意义(桃花是如何代表爱情、美丽和希望的)
行至绍兴,方知江南
垃圾分拣处理设备全解析:种类与选择指南
光圈、快门速度和ISO之间搭配的建议