Flask框架的一个小案例

这个案例简单的实现了Flask框架的原理,运用python中的Flask框架从数据库中提取数据,前端页面运用echarts渲染

后端代码:

from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
#创建Flask应用对象
#__name__表示当前模块的名字
app=Flask(__name__) #访问静态资源的url前缀 静态文件的目录 默认为static模板文件的目录
class Config(object):
    #sqlalchemy的配置参数
    SQLALCHEMY_DATABASE_URI="mysql://root:[email protected]:3306/sales"
    SQLALCHEMY_TRACK_MODIFICATIONS=True
app.config.from_object(Config)
db=SQLAlchemy(app)
class Sales(db.Model):
    __tablename__="tbl_sales"
    days=db.Column(db.String(64),primary_key=True,nullable=True)
    e_mail=db.Column(db.Integer,nullable=True)
    league=db.Column(db.Integer,nullable=True)
    video=db.Column(db.Integer,nullable=True)
    visit=db.Column(db.Integer,nullable=True)
    search=db.Column(db.Integer,nullable=True)
@app.route("/")
def index():
    #查询数据库
    sales_list=Sales.query.all()
    return render_template("sales.html",sales=sales_list)
if __name__ == '__main__':
    db.drop_all()
    db.create_all()
    s1=Sales(days="周一",e_mail=120,league=220,video=150,visit=320,search=820)
    s2=Sales(days="周二",e_mail=132,league=182,video=232,visit=332,search=932)
    s3=Sales(days="周三",e_mail=101,league=191,video=201,visit=301,search=901)
    s4=Sales(days="周四",e_mail=134,league=234,video=154,visit=334,search=934)
    s5=Sales(days="周五",e_mail=90,league=290,video=190,visit=390,search=1290)
    s6=Sales(days="周六",e_mail=230,league=330,video=330,visit=330,search=1330)
    s7=Sales(days="周日",e_mail=210,league=310,video=410,visit=320,search=1320)
    db.session.add_all([s1,s2,s3,s4,s5,s6,s7])
    db.session.commit()
    app.run(debug=True)

前端代码:

<!DOCTYPE html>
<html style="height: 100%">
<head>
    <meta charset="UTF-8">
</head>
<body style="height: 100%;margin: 0">
<div id="container" style="height: 100%;"></div>
<script type="text/javascript" src="../static/echarts%20.js"></script>
<script type="text/javascript">
    var dom=document.getElementById("container");
    var myChart=echarts.init(dom)
    var app={};
    //存储日期
    var data1=[{% for item in sales %}'{{item.days}}',{% endfor %}];
    //邮件直销的数量
    var data2=[{% for item in sales %}{{item.e_mail}},{% endfor %}];
    //联盟广告数量
    var data3=[{% for item in sales %}{{item.league}},{% endfor %}];
    //视频广告数量
    var data4=[{% for item in sales %}{{item.video}},{% endfor %}];
    //直接访问数量
    var data5=[{% for item in sales %}{{item.visit}},{% endfor %}];
    //搜索引擎数量
    var data6=[{% for item in sales %}{{item.search}},{% endfor %}];
    option=null;
    option={
        title:{
            text:'折线图堆叠'
        },
        tooltip:{
            trigger:'axis'
        },
        legend:{
          data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
        },
        grid:{
            left:'3%',
            right:'4%',
            bottom:'3%',
            containLabel:true
        },
        toolbox:{
            feature:{
                saveAsImage:{}
            }

        },
        xAxis:{
            type:'category',
            boundaryGap:false,
            data:data1
        },
        yAxis:{
            type:'value'
        },
        series:[{
            name:'邮件营销',
            type:'line',
            stack:'总量',
            data:data2
        },{
            name:'联盟广告',
            type:'line',
            stack:'总量',
            data:data3
        },{
            name:'视频广告',
            type:'line',
            stack:'总量',
            data:data4
        },{
            name:'直接访问',
            type:'line',
            stack:'总量',
            data:data5
        },{
            name:'搜索引擎',
            type:'line',
            stack:'总量',
            data:data6
        }]

    };;
    if(option && typeof option ==="object"){
        myChart.setOption(option)
    }

</script>
</body>
</html>

效果如下:

猜你喜欢

转载自blog.csdn.net/qq_41338249/article/details/87867151