只需一招,Python 将系统秒变在线版!(下)

简介: 上一期,谈了如何用 Python 打造运营系统 的过程,虽然以及很方便了,但是还有很多需要人工执行的地方,不是特别方便。更重要的是无法及时为大家提供实时数据,加上有时工作繁忙可以忘掉,实属不便。那么再进一步 —— 做成在线版的,可以随时浏览,方便快捷,还等什么,开干吧。

数据列表

成员数据、组长数据 以及 开单数据,都是用数据表格展示的,使用了 jsGrid[9] 框架,主要是方便易用。

在页面上定义一个 div,并设置 id,然后用 jsGrid 方法渲染一些就可以了,和简单。

其实在上一节,我们以及看到如何渲染了,需要做的事定义后台 API 接口,通过 Ajax 加载数据就可以了:

$("#jsGrid").jsGrid({
    height: '600',
    width: "100%",
    editing: false,
    sorting: false,
    autoload: true,
    controller: {
        loadData: function() {
            var d = $.Deferred();
            $.ajax({
                url: "/api/memberdata",
            }).done(function(response) {
                d.resolve(response.data);
            });
            return d.promise();
        }
    },
    fields: [{'name': '组', type: "text"},
        {'name':'昵称', type: "text"},
        {'name':'开单', type: "text"},
        {'name':'分享', type: "text"},
        {'name':'打卡', type: "text"},
        {'name':'提问', type: "text"},
        {'name':'解答整理', type: "text"},
        {'name':'积分', type: "text"},
    ]
});
  • controller 里的 loadData 在页面元素绘制完成调用
  • loadData 方法返回一个 promise[10],等数据获取成功之后,会渲染到页面上

那么 组长数据 和 开单数据 是类似的,就不赘述了。

数据接口

Flask 实现后台接口,特别简单,只需要再接口相应方法前,加句注解[11] 就好了,例如 打卡率的接口:

@app.route('/')
@app.route('/check_rate')
def check_rate():
    data = dataSource.show_check_rate(rtype='dict')
    ret = [['date', '1组', '2组', '3组', '4组', '5组']]
    for d in data:
        row = []
        for k in d:
            row.append(d[k])
        ret.append(row)
    return render_template('check_rate.html', title='打卡率', data=ret)
  • @app.route 是个注解,以指定 URL 路径,由 check_rate 方法做相应
  • dataSource 是对上一期数据处理功能的一个封装,调用相应方法,获取数据
  • render_template 是 Flask 响应页面合成的方法,第一个参数是模板页面,后面的命名参数是需要替换的数据

打卡率页面的数据,是合成响应页面时提供的,还有一些页面需要前台通过 Ajax 方式获取,接口怎么写呢?

用获取成员数据作为例子:

@app.route('/api/memberdata')
def api_memberdata():
    data = {'data': dataSource.show_member_score(rtype='dict')}
    return jsonify(data)
  • 通过封装的数据处理类,得到数据
  • 调用 Flask 的 jsonify 方法将数据作为 json 响应提供给前台

那么,其他的页面响应和数据响应接口是类似的,更详细的代码,见代码示例。

部署

主要的开发工作完成后,就可以部署了。

之前写过 部署 Flask[12],用的是 uWSGI ,刚好照搬。

如果没有 git 或者 svn 的代码管理,就直接将复制到服务器上,安装 Flask,就可以启动了。

python app.py

没有问题,配置一下 Nginx[13] 的反向代理:

server {
    listen        80;
    server_name stc.example.com;
    access_log    /var/log/nginx/access_stc.log main;
    location / {
        proxy_buffers 8 1024k;
        proxy_buffer_size 1024k;
        proxy_pass http://127.0.0.1:5000;
    }
}
  • server_name 为域名,也就是通过这个地址可以访问到系统的,在此之前需要申请并备案域名[14]
  • location 里的 proxy_pass 是服务器上我们的 Web 服务的地址
  • Nginx 的作用是做一个代理,将通过 stc.example.com 的访问转发到 真实地址上

配置完成之后,重启一下 Nginx 服务,如果没有问题,就可以通过设置的域名访问了。

维护

开发部署完成,还不是真的完成,还需要做运维。

以这个项目为例,运维工作主要有两部分:

  1. 数据处理
  2. 服务器维护

只有不断地做数据处理,才能及时更新数据,这个工作对于 Web 系统来说,属于支撑性的,所以没必要让 Web 系统来负责。

在 Linux 系统上,有个 crontab[15] 命令,用它做定时数据数据,好处是开发量少,另外不会因为 Web 系统的问题导致数据处理不及时。

服务器维护,就是保证服务器不会因为异常停止工作,一般使用像 uWSGI 类的服务器都有自维护功能,如果没有使用的话,就需要自己处理了,比如写个监控脚本,当发现服务器不工作时,重启服务,并发送通知。

强烈建议 使用安全的 Web 服务器,特别是在生产环境中

总结

到此,系统的搭建完成了,再也不用我每天为生成报表耗费时间了,可以将更多的时间用在更重要的事情上了。

如果你认真读了,就会发现,每一块的知识技术,都是很简单的,但如何将这些简单的点拼接起来,是需要大量的知识记录和历练的。

而我之所以可以这样做,是因为在这里的长期输出,从最基础的 Web 系统开始,一点一点了解整个 Web 系统需要的基础,当需要完成一个系统时,大部分都是来自平时的积累。

期望这篇文章对你有所启发,一切都源自持续积累,比心!

目录
相关文章
|
23天前
|
存储 人工智能 搜索推荐
【python】python用户管理系统[简易版](源码+报告)【独一无二】
【python】python用户管理系统[简易版](源码+报告)【独一无二】
|
28天前
|
Python
Python实现简易天气查询系统
Python实现简易天气查询系统
28 4
|
1月前
|
数据库 开发者 Python
用Python代码打造你的私人网页交互系统
用Python代码打造你的私人网页交互系统
30 1
|
2月前
|
存储 算法 计算机视觉
用Python做了个图片识别系统(附源码)
用Python做了个图片识别系统(附源码)
|
2月前
|
前端开发 关系型数据库 MySQL
基于python+mysql的宠物领养网站系统
基于python+mysql的宠物领养网站系统
36 2
|
2月前
|
监控 安全 自动驾驶
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
78 1
|
9天前
|
数据采集 NoSQL 搜索推荐
五一假期畅游指南:Python技术构建的热门景点分析系统解读
五一假期畅游指南:Python技术构建的热门景点分析系统解读
|
18天前
|
人工智能 机器人 测试技术
【Python】Python仓储管理系统(源码)【独一无二】
【Python】Python仓储管理系统(源码)【独一无二】
|
23天前
|
人工智能 机器人 测试技术
【Python】Python房屋销售系统(源码)【独一无二】(课程设计)
【Python】Python房屋销售系统(源码)【独一无二】(课程设计)
|
26天前
|
机器学习/深度学习 数据采集 算法
基于Apriori关联规则的电影推荐系统(附python代码)
这是一个基于Apriori算法的电影推荐系统概览。系统通过挖掘用户评分数据来发现关联规则,例如用户观看某部电影后可能感兴趣的其他电影。算法核心是逐层生成频繁项集并设定最小支持度阈值,之后计算规则的置信度。案例中展示了数据预处理、频繁项集生成以及规则提取的过程,具体包括用户评分电影的统计分析,如1-5部电影的评分组合。最后,通过Python代码展示了Apriori算法的实现,生成推荐规则,并给出了一个简单的推荐示例。整个过程旨在提高推荐的精准度,基于用户已评分的电影推测他们可能尚未评分但可能喜欢的电影。
基于Apriori关联规则的电影推荐系统(附python代码)