Django数据驾驶舱

Django数据驾驶舱

      • 1.项目介绍
      • 2.项目结构
      • 3.库表结构
        • 3.1 appcsdn的models
        • 3.2 appssq的models
        • 3.3 appweather的models
        • 3.4 appweibo的models
      • 4.功能展示
      • 5.解决问题
        • 5.1 路由配置
        • 5.2 后端数据与前端echarts展示
        • 5.3 长图表丝滑滚动条
      • 6.遗留问题
      • 7.资源分享

1.项目介绍

这里介绍本人最近进行的数据展示项目,该项目由7个部分组成:CSDN统计、福彩信息、天气预报、股指信息、AI绘图、数据库监控。这些都是笔者感兴趣的数据,组建而成的模块。

项目的技术栈为:Django框架、jQuery前端、mysql数据库、python编码

github项目地址:见文末
在这里插入图片描述

2.项目结构

该项目,对于大屏中的板块,分别创建了4个应用:appcsdn、appssq、appweather、appweibo;

项目静态信息存放在static目录下;html网页资源存放在templates中;

controlCabin文件夹则包含:配置文件settings.py、路由文件urls.py等
在这里插入图片描述

3.库表结构

3.1 appcsdn的models

应用appcsdn中的models.py

from django.db import models
# cdsn类
class csdnInfo(models.Model):id = models.IntegerField(verbose_name='id主键', primary_key=True)csdn_reader = models.CharField(verbose_name='总访问量', max_length=32)csdn_arcticles = models.CharField(verbose_name='文章数', max_length=16)csdn_order = models.CharField(verbose_name='总排名', max_length=16)csdn_fans = models.CharField(verbose_name='粉丝数', max_length=16)csdn_tfans = models.CharField(verbose_name='铁粉数', max_length=16)csdn_good = models.CharField(verbose_name='获赞数', max_length=16)csdn_comment = models.CharField(verbose_name='评论数', max_length=16)csdn_collect = models.CharField(verbose_name='被收藏数', max_length=16)csdn_share = models.CharField(verbose_name='名片分享数', max_length=16)record_time = models.CharField(verbose_name='记录时间', max_length=32)class Meta:db_table = 'csdnInfo'  # 指明数据库表名verbose_name = 'csdn统计'  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称get_latest_by = 'record_time'ordering = ['record_time']  # 按彩票期数降序排列,-表示降序
3.2 appssq的models

应用appssq中的models.py

from django.db import models
# ssq的类
class ssqInfo(models.Model):id = models.IntegerField(verbose_name='id主键', primary_key=True)ssq_code = models.CharField(verbose_name='彩票期数', max_length=16)ssq_date = models.CharField(verbose_name='出奖日期', max_length=32)ssq_red = models.CharField(verbose_name='红球号码', max_length=32)ssq_blue = models.CharField(verbose_name='蓝球号码', max_length=6)ssq_poolmoney = models.CharField(verbose_name='奖池金额', max_length=16)ssq_content = models.CharField(verbose_name='中奖分布信息', max_length=255)class Meta:db_table = 'ssqInfo'  # 指明数据库表名verbose_name = '福彩信息'  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称ordering = ['-ssq_code']  # 按彩票期数降序排列,-表示降序
3.3 appweather的models

应用appweather中的models.py

from django.db import models
# weather类
class weatherInfo(models.Model):id = models.IntegerField(verbose_name='id主键', primary_key=True)nation = models.CharField(verbose_name='国家', max_length=32)province = models.CharField(verbose_name='省份', max_length=32)city_name = models.CharField(verbose_name='城市', max_length=32)city_id = models.CharField(verbose_name='城市id', max_length=32)today_dayText = models.CharField(verbose_name='天气状况', max_length=32)today_heat = models.CharField(verbose_name='温度', max_length=32)today_wind = models.CharField(verbose_name='风向风力', max_length=32)weather_info = models.CharField(verbose_name='7日天气', max_length=3000)record_date = models.CharField(verbose_name='记录日期', max_length=32)record_time = models.CharField(verbose_name='记录时间', max_length=32)class Meta:db_table = 'weatherInfo'  # 指明数据库表名verbose_name = '天气预报信息'  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称ordering = ['province']  # 按彩票期数降序排列,-表示降序
3.4 appweibo的models

应用appweibo中的models.py

from django.db import models
# weibo类
class weiboInfo(models.Model):id = models.IntegerField(verbose_name='id主键', primary_key=True)weibo_record_time = models.CharField(verbose_name='记录时间', max_length=32)weibo_rank = models.CharField(verbose_name='热搜排名', max_length=32)weibo_label = models.CharField(verbose_name='标签', max_length=32)weibo_word = models.CharField(verbose_name='热搜词汇', max_length=255)weibo_num = models.CharField(verbose_name='热搜量', max_length=32)weibo_category = models.CharField(verbose_name='分类', max_length=32)class Meta:db_table = 'weiboInfo'  # 指明数据库表名verbose_name = '微博热搜统计'  # 在admin站点中显示的名称verbose_name_plural = verbose_name  # 显示的复数名称get_latest_by = 'record_time'ordering = ['weibo_rank']  # 按彩票期数降序排列,-表示降序

以上,应用中的models定义好后,可以在命令行运行下面的语句在如mysql等数据库中建表

首次创建Django内置表结构

python manage.py migrate 

让 Django知道我们自定义模型有一些变更,并根据我们自定义app的模型生成创建数据表的脚本

python manage.py makemigrations apphot

通过命令创建apphot模型对应的数据库表 ,命令最后是应用名称

python manage.py makemigrations appcsdn

4.功能展示

在这里插入图片描述

5.解决问题

5.1 路由配置

考虑到项目比较简单,没有配置二级路由,这里路由配置主要是数据接口的获取使用

from django.contrib import admin
from django.urls import path
from appssq.views import view_data_ssq,view_web_ssq,view_datacode_url,view_datacode,view_datacontent,view_datacontent_url,view_stock,view_stock_url
from appcsdn.views import view_csdn_url,view_csdn
from appweather.views import view_data_weather,view_weather
from appweibo.views import view_weibo_url,view_weibourlpatterns = [path('admin/', admin.site.urls),# ssqpath('index.html',view_data_ssq),    # 福彩信息刷新测试1path('appssq/datacode_url',view_datacode_url),    # 福彩信息刷新测试2path('appssq/datacode',view_datacode),    # 福彩信息刷新测试2path('appssq/datacontent_url', view_datacontent_url),  # 福彩信息刷新测试3path('appssq/datacontent', view_datacontent),  # 福彩信息刷新测试3path('appssq/web_ssq',view_web_ssq),    # 福彩重定向# 股票指数path('appssq/stock', view_stock),  # 股票刷新测试1path('appssq/stock_url', view_stock_url),  # 股票刷新测试1# csdnpath('appcsdn/csdn_url',view_csdn_url),    # csdn统计刷新测试1path('appcsdn/csdn',view_csdn),    # csdn统计刷新测试1# weatherpath('appweather/date_weather', view_data_weather),  # weather天气信息1path('appweather/weather',view_weather),  # weather天气信息# weibopath('appweibo/weibo_url', view_weibo_url),  # weibor天气信息1path('appweibo/weibo', view_weibo),  # weibo天气信息
]

在这里插入图片描述

5.2 后端数据与前端echarts展示

在静态资源的map.js中,使用了ajax进行后端数据调用,在调整参数async:false后,前端数据显示正常。

//需要执行的内容:获取ssq_code
var ssq_code = ''; // 全局变量
get_ssq_code = function () {
$.ajax({type: "get",url: "http://127.0.0.1:8000/appssq/datacode_url",async:false,  //值为true表示异步,只为false表示同步success: function (real_code) {ssq_code = '->'+real_code+'期<-'; //将局部变量赋值给全局变量}})
}
get_ssq_code();

在这里插入图片描述

5.3 长图表丝滑滚动条

在天气预报模块,应用到了滚动条

<div class="boxnav" style="height: 200px; overflow: auto; padding: 0 10px;"><table class="table1" width="100%" border="0" cellspacing="0" cellpadding="0" ><thead style="background: #034481;position: relative;z-index: 2;"><tr><th>城市名称</th><th>天气状况</th><th>温度</th><th>风力</th></tr></thead><tbody style="position: relative;"><tr> <td>城市名称</td><td><span class='text-w'>天气状况</span></td> <td><span class='text-b'>温度</span></td> <td><div class='text-d'>风力</div></td></tr></tbody></table>
</div>

效果:上下无缝滚动、滚动条隐藏、鼠标进入停止离开恢复

var divTop = 0;
// 天气预报 tr内容表格填充
get_weather = function(){$.ajax({type: "get",url: "http://127.0.0.1:8000/appweather/date_weather",async:false,  //值为true表示异步,只为false表示同步success: function (weather_list) {var td_str = ''for (var one in weather_list){var province =  weather_list[one]['province'];var city_name = weather_list[one]['city_name'];var today_dayText = weather_list[one]['today_dayText'];var today_heat = weather_list[one]['today_heat'];var today_wind = weather_list[one]['today_wind'];td_str += "<tr> <td>"+province+" "+city_name+"</td> <td><span class='text-w'>"+today_dayText+"</span></td> <td><span class='text-b'>"+today_heat+"</span></td> <td><div class='text-d'>"+today_wind+"</div></td></tr>";}// 完全拼接后,再添加标签内$("tbody").append(td_str);initScroll(weather_list)}})
}
get_weather();// 天气预报tbale1-无缝丝滑滚动function initScroll(list) {let tbody = $('.table1 tbody')let len = list.lengthtbody.css('top', '0')let speed = 50let trH = tbody.find('tr').outerHeight()let marquee = function () {if (divTop <= -trH * len) {divTop = 0} else {divTop -= 1}tbody.css('top', divTop + 'px')}if (window.deptCatalogTopTimer) {clearInterval(window.deptCatalogTopTimer)}window.deptCatalogTopTimer = setInterval(marquee, speed)$(".table1").hover(function(){if (window.deptCatalogTopTimer) {clearInterval(window.deptCatalogTopTimer)}}, function(){window.deptCatalogTopTimer = setInterval(marquee, speed)})
}

6.遗留问题

由于时间仓促,有些模块的细节没有配置接口,写了固定数据,比如csdn板块的折线图、福彩板块的折线图、词云图、AI图片、数据库监控,不过不影响使用。

7.资源分享

github项目地址:https://github.com/phillip927/controlCabin

下载项目资源后,可以对照着我的这篇文章,进行运行配置:

Django项目开发操作实例_django项目开发实战-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/357110.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java打印金字塔paremid和空心金字塔

java打印金字塔 首先确定每行打印几个空格&#xff0c;在确定每行打印几个* 设总层数为layers&#xff0c;当前层数为i。 则每行打印空格数layers-i&#xff0c;每行打印星号数2*i-1 import java.util.Scanner;public class Paremid{public static void main(String[] args) …

Golang三色标记法

简介 在JVM中&#xff0c;GC采用可达性分析法来判断对象是否死亡&#xff1b;在python虚拟机中&#xff0c;GC采用引用计数法加循环检测器来判断对象是否死亡&#xff0c;而在golang中&#xff0c;使用的是三色表记法来判断对象是否死亡。 什么是三色抽象 总所周知在GC时&am…

分享:Javascript开源桌面环境-Puter

Puter这是一个运行在浏览器里的桌面操作系统&#xff0c;提供了笔记本、代码编辑器、终端、画图、相机、录音等应用和一些小游戏。该项目作者出于性能方面的考虑没有选择 Vue 和 React 技术栈&#xff0c;而是采用的 JavaScript 和 jQuery 构建&#xff0c;支持 Docker 一键部署…

DAC测试实验——FPGA学习笔记7

一、DAC简介 DAC全称Digital to Analog Converter&#xff0c;即数模转换器。它用于将主控芯片产生的数字值(0和1)转换为模拟值(电压值)。 1、DAC参数指标 2、DAC类型 常用的DAC可大致分为权电阻网络DAC、T型电阻网络DAC、倒T型电阻网络DAC以及权电流型DAC。 3、AD9708/3PD9…

2024 Testing Expo China – Automotive I 风丘与您相约上海世博馆

2024汽车测试及质量监控博览会&#xff08;中国&#xff09;——&#xff08;Testing Expo China – Automotive&#xff09;是面向整车、零部件和系统开发的各种技术和服务的盛会&#xff0c;展示了汽车测试、开发和验证技术的各个方面&#xff0c;每年在上海举行&#xff0c;…

微积分-导数1(导数与变化率)

切线 要求与曲线 C C C相切于 P ( a , f ( a ) ) P(a, f(a)) P(a,f(a))点的切线&#xff0c;我们可以在曲线上找到与之相近的一点 Q ( x , f ( x ) ) Q(x, f(x)) Q(x,f(x))&#xff0c;然后求出割线 P Q PQ PQ的斜率&#xff1a; m P Q f ( x ) − f ( a ) x − a m_{PQ} \…

Linux常用

很早以前的 ls: 查看文件夹内所有文件 rz: windows的文件传到linux服务器 sz filename: 将文件下载到windows本地 ctrlinsert:复制 shiftinsert:粘贴 ctrlD&#xff1a;退出spark-shell 运行脚本并输出日志 nohup sh filename.sh > log.log 2>&1 & 查看日…

Android 天气APP(八)城市切换 之 自定义弹窗与使用

然后在模块的utils包中新建一个LiWindow类 代码如下&#xff1a; package com.llw.mvplibrary.utils; import android.app.Activity; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; im…

【CSS in Depth2精译】1.1.4 源码顺序

解决层叠冲突的最后一环叫做 源码顺序&#xff0c;有时又称为 出现顺序&#xff08;order of appearance&#xff09;。如果其他判定规则均一致&#xff0c;则样式表中后出现的、或者在页面较晚引入的样式表声明&#xff0c;将最终胜出。 也就是说&#xff0c;可以通过控制源码…

fastapi+vue3+primeflex前后端分离开发项目第一个程序

安装axios axios是用来请求后端接口的。 https://www.axios-http.cn/docs/intro pnpm 是一个前端的包管理工具&#xff0c;当我们需要给前端项目添加新的依赖的时候&#xff0c;就可以使用pnpm install 命令进行安装。 pnpm install axios安装 primeflex primeflex是一个cs…

fastapi+vue3+primeflex前后端分离开发项目环境搭建

创建后端项目 创建文件夹&#xff1a; mkdir backend创建python虚拟环境&#xff1a; python -m venv venv使用Pycharm打开文件夹&#xff0c;然后配置python解释器为venv虚拟环境。 安装fastapi&#xff1a; pip install "fastapi[all]"编写第一个程序&#xf…

嵌入式通信协议----Wi-Fi协议详解(二)(基于STM32+有人物联网WIFI模块)

四、有人WIFI模块 1.模块介绍 Wi-Fi 模块用于实现串口到 Wi-Fi 数据包的双向透明转发&#xff0c;模块内部完成协议转换&#xff0c;通 过该模块&#xff0c;客户可以将物理设备连接到 Wi-Fi 网络上&#xff0c;从而实现物联网的控制与管理。 2.模块参数 Wi-Fi 模块的…

音频信号分析

目录 一&#xff0c;音频获取 二&#xff0c;信号的基本形态 三&#xff0c;衰减信号的频域信号 四&#xff0c;低频信号 五&#xff0c;高频信号 六&#xff0c;七个音节的频率 一&#xff0c;音频获取 我用电子琴&#xff08;音色模式是卧式钢琴&#xff09;&#xff…

软件测试----用例篇(设计测试用例保姆级教程✅)

文章目录 前言一、测试用例概念 二、如何设计测试用例三、设计测试用例的方法3.1基于需求的设计方法3.2具体的设计方法等价类边界值正交法判定表法场景法错误猜测法 前言 在软件开发过程中&#xff0c;测试用例是至关重要的一环。它们帮助软件开发人员和测试人员确定软件是否按…

5.什么是C语言

什么是 C 语言? C语言是一种用于和计算机交流的高级语言, 它既具有高级语言的特点&#xff0c;又具有汇编语言的特点 非常接近自然语言程序的执行效率非常高 C语言是所有编程语言中的经典&#xff0c;很多高级语言都是从C语言中衍生出来的&#xff0c; 例如:C、C#、Object-C、…

Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解

定时任务 在Java EE企业级开发中&#xff0c;定时任务&#xff08;也称为后台调度或周期性任务&#xff09;是非常常见的一种功能&#xff0c;主要用于执行那些不需要用户交互&#xff0c;但需要按照预定时间间隔或事件触发的任务。Java EE提供了几个框架和API来处理这种需求&…

库卡机器人减速机维修齿轮磨损故障

一、KUKA机器人减速器齿轮磨损故障的原因 1. 润滑不足&#xff1a;润滑油不足或质量不佳可能导致齿轮磨损。 2. 负载过重&#xff1a;超过库卡机械臂减速器额定负载可能导致齿轮磨损。 3. 操作不当&#xff1a;未按照说明书操作可能导致KUKA机器人减速器齿轮磨损。 4. 维护不足…

【docker安装rabbitmq】

docker安装rabbitmq 1.查阅rabbitmq的Dokcer Hub官方说明 rabbitmq地址&#xff0c;因为我们需要使用的是带管理界面的rabbitmq服务。所以我们需要下载的rabbitmq:management镜像 docker pull rabbitmq:management2.启动rabbitmq 2.1.快速启动 One of the important thing…

[吃瓜教程]概览西瓜书+南瓜书第3章线性回归

第三章 线性模型 3.0 机器学习三要素 模型&#xff1a;根据问题&#xff0c;确定假设空间策略&#xff1a;根据评价标准&#xff0c;确定选取最优模型的策略&#xff08;通常会产出一个损失函数&#xff09;算法&#xff1a;求解损失函数&#xff0c;确定最优模型。 3.1基本…

Redis进阶 - 朝生暮死之Redis过期策略

概述 Redis 是一种常用的内存数据库&#xff0c;其所有的数据结构都可以设置过期时间&#xff0c;时间一到&#xff0c;就会自动删除。你可以想象 Redis 内部有一个死神&#xff0c;时刻盯着所有设置了过期时间的 key&#xff0c;寿命一到就会立即收割。 你还可以进一步站在死神…