Flask Web应用开发项目实战 基于Python和统信UOS

978-7-115-62700-1
作者: 木合塔尔·沙地克
译者:
编辑: 赵祥妮

图书目录:

详情

【暂空后续补充】这是一本极具实用价值的书籍,作者结合自己的实际使用经验,用一个完整的项目介绍了在统信 UOS 操作系统上进行 Flask Web 应用开发的全过程。随着统信 UOS 在更多行业、更多领域中得到应用,我们非常期待有更多的开发者使用统信 UOS,分享使用经验与开发案例,让更多的开发者受益,共同建设更好的统信 UOS 生态。 —— 统信软件教育与考试中心 执行院长 秦冰

图书摘要

版权信息

书名:Flask Web应用开发项目实战基于Python和统信UOS

ISBN:978-7-115-62700-1

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

版  权

著    木合塔尔·沙地克

责任编辑 赵祥妮

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内容提要

本书通过一个完整的项目开发案例,系统介绍在统信UOS操作系统上进行Flask Web应用开发的过程。本书从项目功能、环境配置开始介绍,详细分析用户功能、管理功能、数据分析与可视化、数据库管理的代码实现,最后还介绍了搭建服务器的流程与模块化编程。为了方便学习,本书提供完整的项目源码。虽然所有代码的开发调试在统信UOS上进行,但在Windows、macOS和Linux系统上均可以运行。

本书可作为高校计算机及相关专业的应用开发教材,也可作为Web开发工程师和相关从业者的自学参考书。本书对基于统信UOS进行Web开发的工程师极具参考价值。

前  言

Flask是目前十分流行的、轻量级的可定制Web框架,较其他同类型框架更为灵活、轻便、安全且容易上手,能够很好地结合MVC模式进行开发。程序员可以使用Python语言快速实现一个网站或Web服务;通过分工合作,小型团队在短时间内就可以实现功能丰富的中小型网站或Web服务。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别用于实现业务处理和安全方面的功能,为Web项目开发提供了丰富的基础组件,从而可以实现个性化的网站定制。

随着统信UOS操作系统的不断发展,电子办公、教育、金融等领域开始使用统信UOS,不难预测,基于国产操作系统的应用开发即将成为大趋势。目前在国产平台上进行Web应用开发的相关资料非常少,虽然在网上可以找到一些相关文章,但只是阅读这些零零散散的文章,初学者想要在国产操作系统上开发一个完整的Web应用仍然有一定的难度。为了弥补这一缺陷,本书通过一个完整的项目开发案例(是学习编程的最好方法之一),系统地介绍在统信UOS上开发Flask Web应用的相关知识。

本书的特点:一是完全在国产统信UOS上开发、部署应用;二是以完整的项目为例,系统地介绍Flask Web编程;三是用“Pythonic代码揭秘[1]”模块对具有Python特性的代码给出简单、易懂的同等代码解释;四是详细介绍MySQL、MariaDB数据库服务器在Windows、CentOS和UOS Server上的安装、配置和远程连接;五是虽然书中所有代码都在统信UOS上开发、调试、部署,但其在Windows、macOS和Linux系统上均可以调试、部署、运行。本书所涉及的相关内容有统信UOS、Windows、CentOS、SQLite、MySQL、MariaDB、Tornado、Gunicorn、Python、Flask、HTML、CSS、jQuery、Bootstrap等知识。

[1] Python最迷人的特性之一是“一致性”,这种一致性的代码就称为Pythonic风格的代码。Pythonic追求的是充分利用Python语言的特性来产生清晰、简洁和可维护的代码。Pythonic代码不仅追求获得正确的语法,而且遵循Python社区的约定。虽然Pythonic代码是习惯,而不是硬规则,但如果想成为“Python高手”,最好养成这个习惯。

本书不是从零开始讲解Python语法,而是围绕实际项目讲解Flask Web应用开发所需的知识,并对书中的代码进行了详细解释,不仅适合有一定编程基础的读者参考,也适合初学者参考。同时为了让初学者易于上手,项目采用结构简洁、流程直接的单文件编程方式开发,并确保各个功能模块能够独立运行,读者可以按需选择性参考相关章节,不必从头到尾阅读。

本书共8章,另有若干附录。第1章主要介绍项目功能和本书涉及的知识点;第2章主要讲解Flask开发环境的搭建和开发工具的安装;第3章讲解创建Web应用、创建数据库和用户功能的实现,包括用户注册、用户登录、用户主页、密码修改、发送邮件等功能的实现;第4章讲解管理功能的实现,包括管理员登录、管理主页、编辑、审核、删除用户、密码初始化、系统初始化、照片相册、超级管理员等功能的实现;第5章讲解数据分析与可视化,包括饼图、极坐标系、柱状图、折线图、散点图、雷达图、K线图、箱形图、漏斗图、词云图等常用的交互式动态可视化图形的实现;第6章讲解使用Flask-Admin对后台数据库进行管理;第7章介绍Tornado和Gunicorn服务器的搭建;第8章介绍模块化编程,以模块化编程方式实现用户功能;附录A介绍数据分析与可视化所需模拟数据的生成;附录B介绍在Windows上安装/配置/连接MySQL数据库服务器;附录C介绍在CentOS上安装/配置/连接MariaDB数据库服务器;附录D介绍在UOS Server上安装/配置/连接MySQL数据库服务器。

谨以此书献给我的爸爸,我的爸爸在世时特别希望在有生之年出一本他自己的书,虽然他没能实现自己的愿望就离开了我们,但是我完成了他的遗愿。同时感谢我的家人的支持,感谢单位为我提供了创作条件,特别感谢赵祥妮老师耐心的指导和帮助,感谢所有支持我的人。

尽管我对本书进行了多次核对,但难免存在疏漏。如果您在阅读中发现问题,欢迎发邮件到muhtar_xjedu@163.com。

木合塔尔·沙地克

2023年12月

服务与支持

资源获取

本书相关的案例素材与源码,您可访问https://gitee.com/botiway/code获取。本书还提供配套PPT,您可以扫描二维码,根据指引领取。

提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区(https://www.epubit.com/),按书名搜索,进入本书页面,点击“发表勘误”,输入勘误信息,点击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。

如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。

“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域30余年的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。

第1章 “简历平台”项目介绍

Web应用的开发会涉及多个角色,比如客户(提出需求)、项目经理(决定需求的实现方式)、开发者(实现需求)等。

Web应用开发主要包括以下流程。

分析需求,列出功能清单或写需求说明书。

设计应用的功能,写功能规格书和技术规格书。

开发与测试的迭代。

调试和性能等专项测试。

部署上线。

运营维护。

写好功能规格书后,我们就可以进行实际的代码编写。在具体的开发中,代码编写主要分为前端开发和后端开发。

前端开发主要包括以下流程。

根据功能规格书画页面草图。

根据页面草图做交互式原型图。

根据交互式原型图开发前端页面。

后端开发主要包括以下流程。

数据库建模。

编写表单类。

编写视图函数和相关的处理函数。

在页面中使用Jinja2替换虚拟数据。

流程的每一步并不都是必需的,对于一些简单的应用,可以根据情况省略某些步骤。在实际开发中,有时也将测试融入整个开发流程中。

本书以“简历平台”项目开发为例,系统地介绍Flask Web编程,主要包括(但不限于)数据库创建、用户注册、用户登录、密码修改、发送邮件、用户信息编辑、文件上传、菜单设计、工具栏功能实现、安全退出、模态对话框、照片相册、cookie操作、密码初始化、系统初始化、后台数据库管理、搭建服务器、模块化编程、数据分析与可视化等功能模块。

为了让初学者易于上手,我们在简化代码的同时,尽量覆盖不同的数据类型、不同的组件,尽力用不同的方法实现相似的功能。

1.1 “简历平台”项目要点

1.1.1 目录结构

“简历平台”目录结构大致如下:

├── admin.json
├── admips.txt
├── app.py
├── data.db
├── db.py
├── __pycache__
│   └── app.cpython-37.pyc
├── static
│   ├── ckeditor(里面有73个文件夹、327个文件)
│   ├── file
│   ├── image
│   ├── js
│   │   ├── echarts.min.js
│   │   └── echarts-wordcloud.min.js
│   └── sys_Heart.jpg
├── templates
│   ├── admbase.html
│   ├── admin
│   │   ├── index.html
│   │   └── initsys.html
│   ├── admined.html
│   ├── admin.html
│   ├── album.html
│   ├── base.html
│   ├── change.html
│   ├── chartbase.html
│   ├── echart.html
│   ├── edit.html
│   ├── email.html
│   ├── initpwd.html
│   ├── initsys.html
│   ├── logined.html
│   ├── logined_table.html
│   ├── login.html
│   ├── login_modal.html
│   ├── regist.html
│   ├── super.html
│   └── super_table.html
├── config.py
├── tornado_server.py
├── super.json
└── visit.json
 
82 directories, 356 files

本项目共有82个目录(文件夹)、356个文件,其中主要的目录与文件介绍如下。

admin.json:存储管理员密码。

admips.txt:存储允许访问管理功能的计算机IP地址。

app.py:程序代码。

data.db:SQLite数据库文件。

db.py:创建数据库的代码。

static文件夹:存储静态文件,如照片、JavaScript文件等。

file文件夹:存储用户文件。

image文件夹:存储用户照片。

js文件夹:存储echarts.min.js(ECharts插件)、echarts-wordcloud.min.js(ECharts WordCloud插件)等文件。

sys_Heart.jpg:词云图背景图。

templates文件夹:存储模板(HTML)代码。

admbase.html:管理页面基模板。

admined.html:管理员主页面模板。

admin.html:管理员登录模板。

base.html:用户页面基模板。

change.html:用户密码修改模板。

chartbase.html:数据可视化基模板。

echart.html:数据可视化页面模板。

edit.html:编辑模板。

email.html:发送邮件模板。

initpwd.html:用户密码初始化模板。

initsys.html:系统数据初始化模板。

logined.html:用户主页面模板。

login.html:用户登录模板。

super.html:超级管理员模板。

regist.html:用户注册模板。

tornado_server.py:启动Tornado服务器的代码。

super.json:存储超级管理员密码。

visit.json:存储用户访问数。

1.1.2 用户功能

用户功能包括用户注册、用户登录、用户主页(用户功能的核心)、密码修改、发送邮件、安全退出等模块。我们先了解一下用户功能各模块的主要功能。

用户登录页面如图1-1所示。在用户登录页面,单击“注册”按钮(或单击主菜单上的“用户注册”子菜单项),打开用户注册页面1,如图1-2所示。

图1-1 用户登录页面

图1-2 用户注册页面1

在图1-2所示的用户注册页面1,输入邮箱(登录账号用,若用户忘记密码,邮箱可用于找回密码)、密码、确认密码、姓名、出生日期等信息,并选择性别,单击“下一步”按钮。如果输入的内容有效,则打开用户注册页面2,如图1-3所示。

在图1-3所示的用户注册页面2,选择文化程度、照片、爱好(按住Ctrl键可多选),并输入特长信息,单击“注册”按钮。如果输入的内容有效,则显示“注册成功”提示信息,如图1-4所示。同时,用户注册信息被写入后台数据库,系统跳转到用户登录页面。

图1-3 用户注册页面2

图1-4 注册成功

“简历平台”设定只有审核通过的用户,方可登录用户主页使用平台功能。

打开管理员登录页面,输入管理员邮箱和密码(不要选择“登录Flask-Admin后台”复选框),单击“管理员登录”按钮,如图1-5所示。

图1-5 管理员登录页面

如果输入的管理员邮箱、密码有效,后台首先判断该用户IP地址是否在被允许访问管理主页的IP地址范围之内。如果用户IP地址是被允许访问管理主页的IP地址,则从后台数据库读取用户信息,判断用户邮箱和密码是否正确、用户是否为管理员,如果均为是,则进入管理主页,如图1-6所示。

图1-6 管理主页

在图1-6所示的管理主页,找到新注册的用户,在“操作”列,单击“审核”按钮,在显示的下拉菜单中选择“通过”子菜单项。单击主菜单上的“退出”子菜单项,系统将退出管理主页,转到用户登录页面,显示“您已安全退出”提示信息。

在用户登录页面,输入刚才审核通过的用户的邮箱、密码和验证码,选择“记住我”复选框(选择“记住我”复选框,系统将会把用户账号信息写入cookie,该用户再次打开用户登录页面时,系统就直接进入用户主页,不用再输入邮箱和密码),单击“登录”按钮,如图1-7所示。

图1-7 用户登录页面

如果输入的邮箱、密码和验证码有效、正确,且用户已审核通过,则系统将会进入用户主页,如图1-8所示。

图1-8 用户主页

在图1-8所示的用户主页,输入课程名称、成绩和简历等信息,单击“开始”按钮。如果输入的信息有效(比如成绩范围为0~100的整数等),系统开始自动生成个人简历Word文档。个人简历Word文档生成之后,在用户主页顶部显示“已完成,请下载”的提示信息,并在“开始”按钮旁显示“下载”按钮,如图1-9所示。

图1-9 “下载”按钮

在图1-9所示的用户主页,单击“下载”按钮,系统开始下载个人简历Word文档。下载完毕之后,浏览器会自动打开下载的Word文档,如图1-10所示。

图1-10 个人简历Word文档

用户可以自行修改图1-10所示的个人简历Word文档。

接下来回到用户主页,在主菜单中,单击“密码修改”子菜单项,进入密码修改页面,如图1-11所示。

图1-11 密码修改页面

在图1-11所示的密码修改页面,输入邮箱、原密码、新密码和确认新密码,单击“修改”按钮,可对用户密码进行修改。如果输入的信息有效、准确,系统会用新密码替换后台数据库中的原密码,并转到用户登录页面(因为我们在前面登录系统时,选择了“记住我”复选框,系统已把用户账号信息写入cookie,这次系统自动转到用户登录页面时,由于cookie里已有该用户账号信息,因此系统不再停留在用户登录页面,而直接打开用户主页),在用户主页顶部显示“密码修改成功”提示信息,如图1-12所示。

图1-12 密码修改成功

在图1-12所示的用户主页,单击主菜单上的“发送邮件”子菜单项,进入发送初始密码邮件页面,如图1-13所示。

图1-13 发送初始密码邮件页面

在图1-13所示的发送初始密码邮件页面,输入用户邮箱和验证码,单击“发送邮件”按钮,系统会给该用户邮箱发送初始密码。如果输入的邮箱和验证码有效、准确,系统将用初始密码(123456)替换后台数据库中的用户原密码,向该用户邮箱发送初始密码,转到密码修改页面,在页面顶部显示“邮件已发送”提示信息,提示用户修改初始密码,如图1-14所示。

图1-14 邮件已发送

打开浏览器,进入用户的邮箱,可以看到“简历平台”给用户发送的邮件(因为我们注册的用户邮箱地址和系统邮件服务器配置的邮箱地址是同一个地址,所以这里看到的发件人地址和收件人地址是同一个),如图1-15所示。

图1-15 收到的初始密码邮件

1.1.3 管理功能

管理功能包括管理员登录、管理主页(管理功能的核心,包括用户信息的编辑、审核、删除等功能)、密码初始化、系统初始化、照片相册、安全退出等模块。

因为管理功能需具备管理员权限的用户方可登录使用,所以首先登录超级管理员页面,将用户设为管理员。打开管理员登录页面,如图1-16所示。

图1-16 管理员登录页面

在图1-16所示的管理员登录页面,输入超级管理员邮箱super@super.com和超级管理员密码123456,单击“管理员登录”按钮,显示超级管理员页面,如图1-17所示。

图1-17 超级管理员页面

在图1-17所示的超级管理员页面,在左边的用户名列表中,单击将被设为管理员的用户,然后在右边的“详细信息”栏,单击“权限管理”按钮,显示下拉菜单,选择“设为管理员”子菜单项。这时该用户的权限从“不是管理员”立即变为“管理员”,同时在左边的用户名列表上,该用户名前显示小图标,这表明该用户是管理员。单击主菜单上的“退出”按钮,退出超级管理员页面。

打开管理员登录页面,输入刚才设置成管理员的用户邮箱和密码(不要选择“登录Flask-Admin后台”复选框),单击“管理员登录”按钮。如果输入的用户邮箱、密码有效,系统会判断该用户IP地址是否在被允许访问管理主页的IP地址范围之内,如果在,则从后台数据库读取该用户信息,并判断其邮箱和密码是否正确、该用户是否为管理员,如果均为是,则进入管理主页,如图1-18所示。

在图1-18所示的管理主页我们会看到,页面顶部有主菜单,在主菜单上有“管理主页”“照片相册”“密码初始化”“系统初始化”“退出”等子菜单项。通过这些子菜单项可以打开相应的功能模块。在管理主页中的工具栏上有下三角按钮(单击后,可从弹出的下拉列表中选择字段名称)、关键词输入框、“搜索”按钮、“取消”按钮和“删除”按钮。通过这些工具可以按照用户名或审核状态,进行用户信息搜索,并对搜索结果进行批量删除操作。在“操作”列(表格最右一列)上有“编辑”“审核”“删除”等按钮组。通过按钮组可对相应的用户信息进行编辑、审核(通过或不通过)、删除等操作。

图1-18 管理主页

在图1-18所示的管理主页的工具栏上,单击下三角按钮,从弹出的下拉列表中选择“2-审核状态”,在关键词输入框中输入“通过”,单击“搜索”按钮,可搜索已审核通过的所有用户信息。单击工具栏上的“删除”按钮,则显示“请确认”对话框,其中显示“确定删除吗?”提示信息,如图1-19所示。

图1-19 “请确认”对话框

在图1-19所示的对话框中,如果单击“删除”按钮,系统将删除所有搜索出来的用户信息(即所有已审核通过的用户信息),并在管理主页顶部显示“删除成功”提示信息;如果单击“取消”按钮,系统将关闭对话框不执行任何操作。单击工具栏上的“取消”按钮,系统会取消搜索结果,显示所有用户信息。

在图1-18所示的管理主页的“操作”列,单击某用户对应的“编辑”按钮,显示该用户的信息编辑页面,如图1-20所示。在信息编辑页面我们可以对用户信息进行编辑,完成以后单击“修改”按钮,系统会以修改的内容覆盖后台数据库中的原信息,返回管理主页,显示“修改成功”提示信息。

图1-20 信息编辑页面

在图1-18所示的管理主页的“操作”列,单击某用户对应的“审核”按钮,弹出下拉菜单,其子菜单项有“通过”和“不通过”,选择相应的子菜单项对该用户进行相应的操作,如图1-21所示。

图1-21 “审核”按钮下的子菜单项

类似地,在图1-18所示的管理主页的“操作”列,单击某用户对应的“删除”按钮,弹出删除确认对话框,如图1-22所示。单击“确定”按钮,则删除该用户信息,返回管理主页显示“删除成功”提示信息。

到目前为止,我们已把管理主页的基本功能都了解完了。下面了解主菜单中其他子菜单项的功能。在图1-18所示的管理主页,单击主菜单上的“照片相册”子菜单项,显示照片相册页面,如图1-23所示,照片相册的主要功能是集中显示所有用户的照片。

图1-22 删除确认对话框

图1-23 照片相册页面

在图1-18所示的管理主页,单击主菜单上的“密码初始化”子菜单项,显示密码初始化页面。在密码初始化页面,输入要初始化密码的用户邮箱,单击“密码初始化”按钮,系统会把该用户的密码初始化为“123456”并显示“×××的初始密码为:123456”提示信息,如图1-24所示。

图1-24 密码初始化页面

在图1-18所示的管理主页,单击主菜单上的“系统初始化”子菜单项,显示系统初始化页面,如图1-25所示。在系统初始化页面,选择“删除用户文件”和“数据库初始化”复选框(或任选一个),单击“系统初始化”按钮,系统将会删除用户产生的所有文件和后台数据库所有用户的(除管理员外)信息,然后返回管理员登录页面并显示“系统初始化成功”提示信息。

图1-25 系统初始化页面

在图1-16所示的管理员登录页面,输入管理员邮箱和密码,单击“管理员登录”按钮,系统将转到用户注册页面,显示“没有用户注册”提示信息(因为刚才我们对系统进行了初始化操作,后台数据库没有任何已注册的用户),提示注册用户后再登录,如图1-26所示。

图1-26 用户注册页面

在图1-26所示的用户注册页面,注册一个新用户,然后登录超级管理员页面,将刚才注册的用户设置为管理员,重新登录管理主页,如图1-18所示,单击主菜单上的“退出”按钮。这时系统返回用户登录页面(而不是管理员登录页面)并显示“您已安全退出”提示信息,如图1-27所示。出现这种情况的原因是管理主页与用户主页共用同一个退出视图。

图1-27 安全退出

1.1.4 数据分析与可视化

数据分析与可视化功能不需要用户登录(完全对外开放),主要功能是生成饼图、极坐标系、柱状图、折线图、散点图、雷达图、K线图、箱形图、漏斗图、词云图等常用的交互式动态可视化图形。为了让数据分析与可视化功能达到预期的效果,请先运行模拟数据生成程序(附录A),批量生成(或自行注册一定数量的)用户信息。

在用户登录页面中单击“可视化”按钮,即可打开可视化主页面,如图1-28所示。

图1-28 可视化主页面

从图1-28中我们可以看到,可视化主页面主菜单上有所有可视化视图的子菜单项,单击任一子菜单项即可打开相应的交互式动态可视化页面。单击主菜单上的“登录”子菜单项,系统转到用户登录页面,因为这里我们同样调用了用户退出视图函数。

单击图1-28所示页面主菜单上的“极标”子菜单项,打开极坐标系交互式动态可视化页面,如图1-29所示。

图1-29 极坐标系交互式动态可视化页面

单击图1-28所示页面主菜单上的“柱状”子菜单项,打开柱状图交互式动态可视化页面,如图1-30所示。

图1-30 柱状图交互式动态可视化页面
(注:横坐标关于年代的规范表示应为20世纪90年代等,本书仅为代码中表示方便。)

单击图1-28所示页面主菜单上的“折线”子菜单项,打开折线图交互式动态可视化页面,如图1-31所示。

图1-31 折线图交互式动态可视化页面

单击图1-28所示页面主菜单上的“散点”子菜单项,打开散点图交互式动态可视化页面,如图1-32所示。

图1-32 散点图交互式动态可视化页面

单击图1-28所示页面主菜单上的“雷达”子菜单项,打开雷达图交互式动态可视化页面,如图1-33所示。

图1-33 雷达图交互式动态可视化页面

单击图1-28所示页面主菜单上的“K线”子菜单项,打开K线图交互式动态可视化页面,如图1-34所示。

图1-34 K线图交互式动态可视化页面

单击图1-28所示页面主菜单上的“箱形”子菜单项,打开箱形图交互式动态可视化页面,如图1-35所示。

图1-35 箱形图交互式动态可视化页面

单击图1-28所示页面主菜单上的“漏斗”子菜单项,打开漏斗图交互式动态可视化页面,如图1-36所示。

图1-36 漏斗图交互式动态可视化页面

单击图1-28所示页面主菜单上的“词云”子菜单项,打开词云图(字符云)交互式动态可视化页面,如图1-37所示。

图1-37 词云图(字符云)交互式动态可视化页面

1.1.5 数据库管理

打开管理员登录页面,如图1-38所示。

图1-38 管理员登录页面

在图1-38所示的管理员登录页面,输入管理员邮箱和密码,选择“登录Flask-Admin后台”复选框,单击“管理员登录”按钮,就进入Flask-Admin后台管理页面,如图1-39所示。

在图1-39所示的Flask-Admin后台管理页面,单击主菜单上的“用户表管理”子菜单项,打开用户表管理页面,这里只显示程序设计时被允许显示的字段和内容,如图1-40所示。

图1-39 Flask-Admin后台管理页面

图1-40 用户表管理页面

在图1-40所示的用户表管理页面,单击“查看记录”按钮(小眼睛图标),可查看用户所有信息的详情,如图1-41所示。

图1-41 用户信息详情

在图1-40所示的用户表管理页面,单击“编辑记录”按钮(小铅笔图标),可对用户信息中在程序设计时被允许编辑的字段进行编辑,如图1-42所示。

图1-42 编辑用户信息

在图1-42中我们可以看到,文化程度字段以下拉列表形式显示(单击字段后的下三角按钮可打开下拉列表),这也是我们在程序设计时提前设计好的。这里对用户信息进行修改后,单击“保存”按钮,系统将会保存修改后的用户信息并返回用户表管理页面,显示“保存记录成功”提示信息。对用户信息进行修改后,单击“保存并继续编辑”按钮,系统将会保存修改后的用户信息并在该页顶部显示“保存记录成功”提示信息。如果单击“取消”按钮,则返回用户表管理页面。

在图1-40所示的用户表管理页面,单击“删除记录”按钮(小垃圾桶图标),会显示“你打算删除这条记录?”提示框,在提示框中单击“确定”按钮可删除1条用户信息,如图1-43所示。

图1-43 删除提示框

删除成功后,会显示“1记录被成功删除。”提示信息,如图1-44所示。

图1-44 删除成功提示

如果要删除多条用户信息,在图1-40所示的用户表管理页面,选择要删除的多条用户记录(选择最左边的记录复选框),单击“选中的”后的下三角按钮,在打开的下拉菜单中选择“删除”子菜单项,如图1-45所示。

图1-45 删除多条用户记录

在显示的“你打算要删除这些选中的记录吗?”删除提示框中,单击“确定”按钮,可删除选中的多条用户信息。删除成功后,显示“10记录被成功删除。”提示信息(这里我们选择了10条用户记录),如图1-46所示。

图1-46 成功删除多条用户记录

在图1-40所示的用户表管理页面,单击“导出”按钮(在“列表”旁),以CSV格式导出所有用户信息,如图1-47所示。

图1-47 导出用户信息(“特长”列的部分文字以名言代之)

在图1-40所示的用户表管理页面,单击主菜单上的“系统初始化”子菜单项,会显示系统初始化页面,如图1-48所示。

图1-48 系统初始化页面

在图1-48所示的系统初始化页面,选择“删除用户文件”和“数据库初始化”复选框(也可任选其一),单击“系统初始化”按钮,系统将会删除用户生成的所有文件和数据库所有用户的信息(这里的系统初始化模块与管理功能中的系统初始化模块功能是一样的,只是实现方式不一样)。系统初始化成功后,转到管理员登录页面,并显示“删除用户文件数据库初始化完毕!”提示信息,如图1-49所示。

图1-49 系统初始化完毕

在图1-48所示的页面,单击主菜单上的“管理员页面”子菜单项,打开管理员主页,如图1-50所示。

图1-50 管理员主页

在图1-50所示的页面,可以对用户进行审核通过、审核不通过和删除等操作。

在图1-50所示的页面,单击主菜单上的“密码初始化”子菜单项,打开密码初始化页面,如图1-51所示。

图1-51 密码初始化页面

在密码初始化页面,输入要初始化密码的用户邮箱,单击“密码初始化”按钮,即可对该用户密码进行初始化,初始化后的密码为“123456”。

在图1-51所示的页面,单击主菜单上的“用户图相册”子菜单项,打开用户图相册页面,如图1-52所示。

在图1-49所示的管理员登录页面,输入超级管理员邮箱(默认为super@super.com)、超级管理员密码(默认为123456),单击“管理员登录”按钮,登录超级管理员页面,如图1-53所示。

图1-52 用户图相册页面

图1-53 超级管理员页面

从图1-53可以看到,单击操作旁边的“权限管理”按钮,显示下拉菜单,子菜单项有“设为管理员”和“取消管理员”,选择相应的子菜单项可进行相应的操作。只有被设置为管理员的用户才能登录管理主页,对用户信息进行编辑、审核和删除操作;只有审核通过的用户才能登录用户主页,进行简历生成操作。

1.2 涉及的技术知识点

1.2.1 统信UOS

统信软件基于Linux内核、采用同源异构技术打造操作系统统信UOS,它同时支持4种CPU(Central Processing Unit,中央处理器)架构(AMD64、ARM64、LoongArch、SW64)、六大国产CPU平台(鲲鹏、龙芯、申威、海光、兆芯、飞腾)及Intel/AMD的主流CPU,提供高效简洁的人机交互界面、美观易用的桌面应用、安全稳定的系统服务,是真正可用和好用的自主操作系统。

统信UOS服务器版主要面向我国电子办公、教育、金融、能源等领域,着重满足企业级用户在信息化基础建设过程中,对服务端基础设施的安装部署、运行维护、应用支撑等需求。

1.2.2 Python

Python提供了高效的高级数据结构、简单有效的面向对象编程。Python的语法、动态类型和解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。

Python解释器易于扩展,具有丰富的标准库,提供了适用于各个主要系统的源码或机器码。

在2021年10月的TIOBE排行榜上,Python被评为最受欢迎的编程语言,20年来首次位列Java、C和JavaScript之上。自Python语言诞生之初(20世纪90年代初)至2022年,它已被逐渐应用于系统管理任务的处理和Web编程。

1.2.3 Flask

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC(Model-View-Controller,模型-视图-控制器)模式,使得小型团队在短时间内就可以实现功能丰富的中小型网站或Web服务。其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

Flask是目前十分流行的Web框架,程序员可以使用Python语言快速实现一个网站或Web服务。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别提供业务处理和安全方面的功能,为Web项目开发提供了丰富的基础组件。

1.2.4 Bootstrap

Bootstrap是基于HTML、CSS、JavaScript 开发的简洁、直观、“强悍”的响应式前端开发框架,使得 Web 开发更加快捷。在Bootstrap中建立一个页面,就可以在3个终端(PC端、平板计算机端、手机端)上完美展示。

1.2.5 jQuery

jQuery是一个快速、简洁的JavaScript框架,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和AJAX交互。jQuery具有高效、灵活的CSS选择器,并且可对CSS选择器进行扩展,具有与CSS语法相似的选择器,几乎兼容所有主流浏览器。

jQuery有丰富多彩的插件,且简单、易学,是开发网站等复杂度较低的Web应用的首选JavaScript框架。

1.2.6 CSS

CSS(Cascading Style Sheets,串联样式表)不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化,能够对网页中元素的位置进行像素级精确控制,支持几乎所有的字体、字号、样式,拥有对网页对象和模型样式进行编辑的能力。

1.2.7 HTML文件

一个网页对应多个HTML(Hypertext Markup Language,超文本标记语言)文件,HTML文件以.htm或.html为扩展名(其中.htm是因为之前的文件系统只支持最多3位扩展名)。可以使用任何能够生成TXT类型源文件的文本编辑器来编写HTML文件,只用修改文件扩展名即可。标准的HTML文件都具有一个基本的整体结构,标签一般都是成对出现的(部分标签除外)。

1.2.8 Tornado

Tornado全称为Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架。作为Web服务器,Tornado有较为出色的抗负载能力,常被用作大型站点的接口服务框架。Tornado框架和服务器一起组成一个WSGI(Web Server Gateway Interface,Web服务器网关接口)的全栈替代品。单独在WSGI容器中使用Tornado框架或者Tornado HTTP服务器有一定的局限性,为了最大化地发挥Tornado的性能,推荐同时使用Tornado框架和Tornado HTTP服务器。

1.2.9 Gunicorn

Gunicorn(Green Unicorn)是一个UNIX下的WSGI HTTP(Hypertext Transfer Protocol,超文本传送协议)服务器,是一个移植自Ruby的Unicorn(一个基于Python的线程模型)项目的pre-fork(提前创建进程)模型。它既支持eventlet,也支持greenlet(greenlet是Python众多协程实现技术中的一种,eventlet是基于greenlet实现的)。

在管理worker时,Gunicorn使用了pre-fork模型,即一个master进程管理多个worker进程,所有请求和响应均由worker处理。master进程是一个简单的loop(可重复执行的代码段),监听worker不同进程的信号并且做出响应。比如接收TTIN信号增加worker数量、接收TTOU信号减少运行worker数量。如果worker无响应,发出CHLD(CHLD为child的缩写)信号,则重启失败的worker,同步的worker一次处理一个请求。Gunicorn服务器与各种Web框架兼容性较好,执行简单,资源消耗低,响应迅速。

1.2.10 Sublime Text

Sublime Text是一个文本编辑器(一款收费软件,但可以无限期试用),同时也是一个先进的代码编辑器。Sublime Text的主要功能包括拼写检查、书签、完整的Python API(Application Program Interface,应用程序接口)、Goto功能、即时项目切换、多选择、多窗口等。Sublime Text是一个跨平台的编辑器,同时支持Windows、Linux、macOS等操作系统。

本书用Sublime Text作为Python代码编辑器,因为它几乎不需要进行任何配置,界面简洁,操作方便,不需要创建项目直接打开文件夹即可开始编辑,最重要的是可无限期试用。

1.2.11 SQLite

SQLite是一款轻型的数据库,它是针对嵌入式设备设计的,而且已经在很多嵌入式产品中得到使用。它占用的资源非常少,在嵌入式设备中,可能只需要几百KB的内存就够了。它支持Windows、Linux、UNIX等主流的操作系统,同时能够与很多程序语言相结合,如Tcl、C#、PHP、Java等,还有ODBC(Open Database Connectivity,开放式数据库互连)接口。与MySQL、PostgreSQL这两款开源的数据库管理系统相比,它的处理速度更快。

SQLite引擎不是与程序通信的独立进程,而是连接到程序中成为程序的一个主要部分,所以主要是在编程语言内的直接API调用。这在减少消耗总量、缩短延迟时间和实现整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主机上存储在一个单一的文件中。

1.2.12 MySQL

MySQL是很好的关系数据库管理系统(Relational Database Management System,RDBMS)应用软件之一。由于其体积小、速度快、总体成本低,而且开源,因此一般中小型网站和大型网站的开发都选择MySQL作为网站数据库。

与其他大型数据库相比,如Oracle、DB2、SQL Server等,MySQL有它的不足之处,但是这丝毫没有降低它的受欢迎程度。而且由于 MySQL是开源软件,因此可以大大降低总体成本。

1.2.13 MariaDB

MariaDB数据库管理系统是MySQL的一个分支。MariaDB完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的替代品。在存储引擎方面,MariaDB使用XtraDB来代替MySQL的InnoDB。MariaDB由MySQL的创始人迈克尔·维德纽斯(Michael Widenius)主导开发,MariaDB这一名称来自迈克尔女儿的名字“Maria”。

1.2.14 Navicat

Navicat是一套可创建多个连接的数据库管理工具,用以方便管理MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB和MongoDB等不同类型的数据库。Navicat的功能足以满足专业开发人员的所有需求,并且对数据库服务器初学者来说既简单又易操作。

1.3 本章小结

本章首先介绍了Web应用程序的开发过程,然后详细介绍了“简历平台”目录结构和各模块(用户功能、管理功能、数据分析与可视化、数据库管理)的功能和界面,最后简要介绍了本书涉及的技术知识点。

相关图书

T20天正建筑V8.0实战从入门到精通
T20天正建筑V8.0实战从入门到精通
Marc 非线性有限元分析标准教程
Marc 非线性有限元分析标准教程
大数据安全治理与防范——网址反欺诈实战
大数据安全治理与防范——网址反欺诈实战
Effective Java (第3版 英文版)
Effective Java (第3版 英文版)
电力安全生产典型事故集——变电检修专业
电力安全生产典型事故集——变电检修专业
新型电力系统ICT应用与实践
新型电力系统ICT应用与实践

相关文章

相关课程