“简历平台”目录结构大致如下:
├── 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所示。在用户登录页面,单击“注册”按钮(或单击主菜单上的“用户注册”子菜单项),打开用户注册页面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-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 安全退出
数据分析与可视化功能不需要用户登录(完全对外开放),主要功能是生成饼图、极坐标系、柱状图、折线图、散点图、雷达图、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-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可以看到,单击操作旁边的“权限管理”按钮,显示下拉菜单,子菜单项有“设为管理员”和“取消管理员”,选择相应的子菜单项可进行相应的操作。只有被设置为管理员的用户才能登录管理主页,对用户信息进行编辑、审核和删除操作;只有审核通过的用户才能登录用户主页,进行简历生成操作。