chartkick+flask画报表
Chartkick是一个图表绘制工具,特点是UI美观、使用简单,并且支持IE6在内的大多数浏览器。chartkick 可以画 javascript 报表, 界面比较美观 ,其支持加载Google Charts 和 Highcharts图形库,而且支持集成Django, Flask/Jinja2框架 。Flask是一个轻量级的Web应用框架, 使用Python编写。基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。使用 BSD 授权。
flask + chartkick 需要先安装chartkick.py 模块。以下是一个demo实现的图形界面:
代码结构如下:
1[root@361way chartkick]# tree
2.
3├── run.py
4├── static
5│ ├── chartkick.js
6│ ├── highcharts.js
7│ └── jquery.min.js
8└── templates
9 └── index.html
一、run.py
代码如下:
1[root@361way chartkick]# cat run.py
2from flask import Flask, jsonify, render_template, request
3import chartkick
4#app = Flask(__name__, static_folder=chartkick.js())
5app = Flask(__name__)
6app.jinja_env.add_extension("chartkick.ext.charts")
7@app.route('/')
8@app.route('/index')
9def index():
10 data = {'Chrome': 52.9, 'Opera': 1.6, 'Firefox': 27.7}
11 return render_template('index.html', data=data)
12if __name__ == "__main__":
13 app.run(host="0.0.0.0",debug=True)
二、index.html
模板代码如下:
1[root@361way chartkick]# cat run.py
2from flask import Flask, jsonify, render_template, request
3import chartkick
4#app = Flask(__name__, static_folder=chartkick.js())
5app = Flask(__name__)
6app.jinja_env.add_extension("chartkick.ext.charts")
7@app.route('/')
8@app.route('/index')
9def index():
10 value = {'Chrome': 52.9, 'Opera': 1.6, 'Firefox': 27.7}
11 return render_template('index.html', data=value)
12if __name__ == "__main__":
13 app.run(host="0.0.0.0",debug=True)
14
15[root@361way chartkick]# cat templates/index.html
16<!-- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
17<script src="http://code.highcharts.com/highcharts.js"></script> -->
18<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>
19<script src="{{ url_for('static', filename='highcharts.js') }}"></script>
20<script src="{{ url_for('static', filename='chartkick.js') }}"></script>
21{% bar_chart data with style="width:200px; height:20px;" %}
22{% pie_chart data %}
由于测试主机上不能上外网,所以这里将js文件下载到了本地,并配置为url_for路径。
python run.py运行后,在浏览器中打开 http://127.0.0.1:5000 就可以看到上面截图的效果了。
三、乱码问题
使用中文数据时会遇到乱码问题,解决方法是用 json 的 dumps 方法 将 dict 或者 list 转换成可以正常显示的中文字符串。如下:
1#先import json模块
2return render_template('index.html', data=value)
3更换为
4return render_template('index.html', data=json.dumps(value, encoding='utf-8',indent=4))
参考页面:chartkick.py模块页面
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/chartkick-flask/4477.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.