(数据科学学习手札121)Python+Dash快速web应用开发——项目结构篇费弗里

这是我的系列教程Python+Dash快速web应用开发的第十八期,通过前面十七期的内容,如果你有用心学习的话,那么恭喜你已经具备使用Dash编写常规web应用的能力了。

而在今天的教程中,我就将为大家介绍我在日常使用过程中总结出的一套针对Dash项目的前后端分离的项目结构基础范式,并以搭建全国七普部分数据可视化看板为例,供大家参考借鉴,从而更有条理的编写和管理Dash应用项目。

开门见山,我们直接先来一览今天要介绍的Dash基础项目结构:

+dash_demo_project/+assets/+css/+img/+js/favicon.ico+callbacks/+models/+views/app.pyserver.py在不考虑外部参数导入、用户登陆验证、应用部署等额外配置文件及功能内容的前提下,上面的结构就可以满足常规Dash应用的需求了。

在页面布局篇中我们提到过assets目录,它是官方推荐的用于存放我们的Dash应用所依赖静态资源文件的目录,如依赖的css、js、favicon.ico、各种图片及字体等静态资源,在本文的可视化看板案例中,assets目录资源放置情况如下:

+assets/+css/bootstrap.min.csscustom.css+img/wxgzh.pngzsxq.png+js/favicon.ico其中img目录下存放的是首页的两张二维码图片,在Dash中可以配合Img()与get_asset_url()来获取assets目录下指定文件路径并渲染:

html.Img(src=app.get_asset_url('img/zsxq.png'),style={'width':'100%'})而css目录下则放置了dash_bootstrap-components所依赖的css文件,而custom.css则是我自己编写的一些用于样式美化的css代码:

.nav-link.active{background-color:#4fc3f7!important;}#index-desc>*{font-size:26px;}.tabletd,.tableth{text-align:center;}直接放置于assets根目录下的favicon.ico则用来替换Dash默认的网页图标:

你可以根据自己Dash项目的实际需求灵活变通,譬如需要用到echarts就可以在js目录下放置echarts.min.js文件。

跟以往的例子不同,在严谨的Dash工程下,推荐构建单独的server.py文件来完成对Dash对象的实例化配置等工作,在今天的可视化看板案例中server.py比较简单,内容如下:

importdashapp=dash.Dash(__name__,suppress_callback_exceptions=True)#设置网页titleapp.title='七普部分数据看板'server=app.server2.2.3在app.py中编写前端骨架与路由如果你的Dash项目非常简单,那么fromserverimportapp之后,就可以像往常一样在app.py中组织你的前端与回调部分内容。

但如果你的Dash项目功能较为复杂,亦或是url联结的页面较多时,就可以只在app.py中编写前端layout骨架,包含了必要的Location()部件、保持不变的前端部分以及由url变化所触发的页面内容容器,譬如今天的可视化看板中左侧边栏部分以及Location()监听部件:

#路由总控@app.callback(Output('page-content','children'),Input('url','pathname'))defrender_page_content(pathname):ifpathname=='/':returnindex_pageelifpathname=='/age':returnage_pageelifpathname=='/sex':returnsex_pageelifpathname=='/statistics':returnstatistics_pagereturnhtml.H1('您访问的页面不存在!')2.2.4在views子模块中构建多页面前端内容在上一小节的路由回调中你可能会好奇不同url下的返回值index_page、age_page等都是什么,这些都构建在子模块views下:

+views/age.pyindex.pysex.pystatistics.py__init__.py譬如其中之一的age.py内容如下:

fromviews.indeximportindex_pagefromviews.ageimportage_pagefromviews.seximportsex_pagefromviews.statisticsimportstatistics_page2.2.5在callbacks子模块中构建多页面后端逻辑当你在views下构建的页面内容中涉及到回调交互的功能时,我推荐将对应的后端回调逻辑拆分到callbacks子模块下同名文件中,这样非常便于编写与维护。

同时一定要记住在views下对应的前端子模块中,一定要导入callbacks中对应的回调子模块内部的至少一个对象,否则Dash在打包应用时是扫描不到相应的回调函数内容进行编译的,进而会导致应用启动时回调无效,譬如在views/statistics.py中我们就执行了fromcallbacks.statisticsimportstatistics_data。

前面说的很多内容都关乎Dash应用的构建,而当你的Dash应用依赖外部数据时,推荐的方式是类似flask项目那样构建子模块models来定义数据模型,实现与数据库的关联。

frompeeweeimportSqliteDatabase,ModelfrompeeweeimportCharField,FloatFielddb=SqliteDatabase('models/age.db')classAge(Model):#地区,唯一region=CharField(unique=True)#0-14岁占比prop_0_to_14=FloatField()#15-59岁占比prop_15_59=FloatField()#60岁及以上占比prop_60_above=FloatField()#65岁及以上占比prop_65_above=FloatField()classMeta:database=dbprimary_key=False#禁止自动生成唯一id列@classmethoddeffetch_all(cls):returnlist(cls.select().dicts())而本文案例中涉及到的数据可视化内容均由plotly及plotly.express实现,关于这部分内容我会在之后的进阶教程中加以概括。

下期我将带大家学习如何在Linux、Windows等系统中正式部署Dash应用,敬请期待。

THE END
1.AI时代的Web开发:让Web开发更轻松ai开发webapp讲解AI时代的Web开发:让Web开发更轻松 本文探讨了人工智能如何通过自动化代码生成、测试、DevOps流程、智能用户界面、搜索优化和提升安全性等方面,极大地改变了网页开发。同时,文章介绍了学习和使用大模型AI的方法和步骤,展示了AI在网页开发领域的广泛应用和未来潜力。https://blog.csdn.net/2301_81940605/article/details/136279390
2.计算机应用技术(web前端方向)计算机应用技术(web前端方向) 专业简介 ·是什么 计算机应用技术主要研究计算机系统管理、应用软件开发、网络管理、信息系统管理和网站建设等方面基本知识和技能,进行数据库应用开发、网站配置与测试、网站运营与维护、技术服务等。例如:京东、当当等网站的设计与开发,数据库的建设与管理,软件的测试与维护等。 关键词:京东http://hbsdz.cc/index.php?m=home&c=Lists&a=index&tid=5238
3.学习python编程开发工程师有哪些发展方向?在当今数字化时代,Python编程语言因其简洁性、高效性和广泛的应用领域而备受瞩目。如果你正在学习Python编程,或者考虑成为一名Python编程开发工程师,那么了解这个领域的发展方向将对你的职业规划至关重要。 一、Web开发 Python在Web开发领域有着广泛的应用。许多流行的Web框架,如Django和Flask,都是用Python编写的。这些框https://www.bwie.com/jsgh/696.html
4.学习Python能用来做什么的问题python导读:如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?” 这个问题不好回答,因为Python有很多用途。 但是随着时间,我发现有Python主要有以下三大主要应用: Web开发 数据科学:包括机器学习、数据分析和数据可视化 脚本 本文将依次介绍。 https://www.jb51.net/article/280394.htm
5.Python2019年开发者调查报告腾讯云开发者社区如果您参与了数据分析或机器学习活动,那您认为自己是数据科学家吗? 在参与数据分析和机器学习的人中,只有33%的人认为自己是数据科学家。 Python版本 Python 3 vs Python 2 虽然Python 2已经不再维护,但仍然有10%的受访者在积极地使用它。 在Python 2的用户中,Web开发占了45%,DevOps/系统管理/编写自动化脚本占https://cloud.tencent.com/developer/news/639165
6.webstorm免费教育许可证使用JetBrains一流的开发工具学习或webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器 各工具介绍 webstorm是JetBrains公司发布的一个web开发IDE,支持代码提示、补全、定位、与git集成等等各种功能,已经跟传统强类型语言的开发环境感觉无多大差异。 node是一个服务端的 javascript运行环境 http://www.stackbox.org/idea/235657.html
7.学习python能干什么学习python有前景吗学习Python能做的工作有这些:数据分析、WEB开发、科学与数字应用和人工智能等。如果想具体了解学习python能干什么,那不妨接着往下看吧! 一、学习python能干什么 1、数据分析 当涉及数据科学、统计学、分析、ML时,Pyhton 是你最想使用的语言之一。Python 是一门通用的编程语言,不仅可以用于统计编程,还可以用于开发游戏https://www.pxwy.cn/news-id-30060.html
8.学习python可以做什么django是使用python语言写成的流行Web开发框架。采用MVC软件设计模式,主要目标是使得开发复杂的、数据库驱动的web站点变得简单。 科学计算 说到科学计算,首先提到的可能是MATLAB。但是,除了一些专业性很强的MATLAB工具箱无法替代外,MATLAB的大部分常用函数都可以在Python世界中找到相应的扩展库。 https://www.qinxue365.com/fangfa/643501.html
9.Python专栏Python的历史及背景介绍Python在过去的几十年中取得了巨大的成功和普及,成为了广泛使用的编程语言之一。它应用于各个领域,包括Web开发、数据科学、机器学习、人工智能等。 二、Python的优缺点 1. 优点 简单易学:Python具有清晰简洁的语法,易于读写和理解。对于初学者来说,上手容易。 https://developer.aliyun.com/article/1580391
10.计算机科学与技术专业:《WEB前端开发技术》课程思政案例十九届五中全会公报要点学习 ——使用 CSS 布局页面元素 一、教学内容 在专业课中开展课程思政,需要融合课程目标和德育目标。因此,在《WEB前端开发技术》课程教学的过程中,我们将增强民族自豪感和文化自信的思政素材元素的融入到教学案例。专业课课程思政教育的主要载体是教学过程,教学过程是关键html和CSS技术的综合应用http://www.sizhengziyuanku.com/anli/5560.html
11.Python那么火,到底能用来做什么?我们来说说Python3的主要应用Web开发 数据科学——包括机器学习、数据分析和数据可视化 脚本编写 我们就依次来看看吧。 小编推荐一个学Python的学习裙【 二二七,四三五,四五零 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有很多干货和技术分享 https://www.jianshu.com/p/90cb1d6680da
12.Python全网最全基次程笔记(一)——基础入门51CTO博客Python拥有多个优秀的Web开发框架,如Django、Flask等,可以快速实现Web应用的开发和部署。 数据分析与科学计算 Python在科学计算和数据分析领域具有广泛应用,拥有NumPy、SciPy、Pandas等强大的科学计算库和Pandas等数据处理库。 人工智能与机器学习 Python是人工智能和机器学习领域的首选编程语言之一,拥有TensorFlow、PyTorch等流https://blog.51cto.com/u_17010021/12491081
13.cheat有关Web 开发工具、计算机科学、巴西葡萄牙语和英语的备忘单 (0)踩踩(0) 所需:1积分 音频信息查看工具(支持mp3,snd,amr,wav) 2024-12-18 10:50:09 积分:1 用友NCC SPR 日志工具的使用 2024-12-18 04:35:50 积分:1 变频器电路常用IC引脚图 https://www.coder100.com/index/index/content/id/2224596
14.数学与计算机科学学院培养自觉践行社会主义核心价值观,拥有坚定正确的政治方向,德智体美劳全面发展的,具有创新创业精神、复合能力和实践能力的,具有扎实的统计学理论基础,熟悉现代统计方法,熟练掌握计算机基础知识,能够应用计算机进行数据分析,并具备大数据的收集、融合、整理、分析能力,能够在企业从事大数据分析、应用开发和系统研发的复合型、https://www.cfxy.cn/drc/zyzx/bkjy/3981be07e69e4e7ba512362e98f43cea.htm
15.2023年Python最热门的14个应用开源地理空间基金会中文分会摘要: 在本文中,我们分享了 2023 年最热门的 14 个 Python 应用。无论是否想在数据科学、Web 开发、物联网等领域找到工作,都涵盖了您需要了解的基本 Python 应用。 当我们迈入 2023 年下半年时,回首发现 Python 仍然是一系列行业、学 在本文中,我们分享了 2023 年最热门的 14 个Python应用。无论是否想https://www.osgeo.cn/post/10347
16.超赞分享!干货汇集的前端周刊(第二期)Chrome 浏览器一直是开发过程中不可缺少的利器。除了功能强大的DevTool,更有各种好用的前端开发与调试工具。在本文中,我们就分享一些前端开发相关的 Chrome 插件,相信有你喜欢的。 2. 新鲜出炉!Web 开发人员必备资源 地址:https://www.sdk.cn/news/4098 一些最新的 Web 开发人员必备学习、工具等资源。 3. 也谈https://www.imooc.com/article/10365
17.前端开发述职报告(共13篇)【导语】这次小编给大家整理了前端开发述职报告(共13篇),供大家阅读参考。 篇1:前端开发述职报告 做了整一年web前端开发,对这个职业感触颇多。 这是一个新的`职业,入门相对后台的开发人员较低,会一些基本的技术就可以了,如:html、css、js等。 但是,随着开发时间的增长你就会发现自己很快的就会进入一个瓶颈,可能https://www.hrrsj.com/wendang/shuzhibaogao/662624.html
18.Python工作太难找!只靠Python真的不容易找工作吗?虽然找工作永远不会是轻而易举的事情,但Python作为一门多用途、易学易用的编程语言,为求职者提供了广泛的选择。关键是,不仅仅要掌握Python,还需要具备相关领域的知识和技能。例如,如果您想从事Web开发,学习Django或Flask等框架将大有裨益。如果您对数据科学感兴趣,掌握数据分析和机器学习的基础知识会增加竞争力。 https://m.w3cschool.cn/article/34061456.html