基于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操作实现动态效果
热门推荐
高蛋白桑根草落户库车,一年可收四五茬
橙子真的能救嗓子?
AI大模型:能源行业的救星还是颠覆者?
构建知识图谱:从技术到实战的完整指南
体育舞蹈的等级标准及其考核要求
啤酒鸭烹饪教程:6步做出香嫩可口的家常美味
川渝啤酒鸭:啤酒去腥,豆瓣酱提味,6步复刻
青岛啤酒遇上老鸭:一道酥烂醇香的家常菜制作详解
CBOT玉米价格走势:供需宽松下的震荡行情
中储粮发力玉米收储,市场有望回暖
2025年玉米期货投资展望:供需偏紧带来新机遇
直隶官府菜,保定宴带你品味千年美食文化
延边茄子炒饭:专治孩子不爱吃饭的美味秘诀
2024河南中考录取分数线出炉!各地市分数线及变化趋势详解
铁锹入梦:解密传统梦境中的劳动与心理象征
与人相处,最重要的就是这点
若想心脏不衰老,建议每天多吃这6种营养素,心脏或许会更加健康
手动挡汽车如何驾驶?这种驾驶方式对驾驶技能有何要求?
厕所改造+文明引导,宁波多校破解学生如厕难题
地铁离去新手指南:火车轨道如何正确切换
五大秘诀助力职场人突破自我,实现职业跃升
守护颈动脉健康:7种食物助力预防斑块形成
研究证实薰衣草香薰助眠,四种使用方法详解
冬日打卡南澳岛三大灯塔,解锁海岛新玩法
爱奇艺号审核新规:这些红线千万别碰!
从罗勒到八角:肉类烹饪中香料的完美搭配指南
传统红烧排骨的现代改良:三种创新方案详解
风水的仪式感与心理学
雪梨汤水,让你告别嗓子疼痛
秋季嗓子疼?试试川贝炖雪梨