flask-admin章节一:使用chartkick画报表

一般中小型WEB整体来看逻辑比较简单些,一般都是基于数据库的增删改查。不过通过数据库查询到的记录直接展示给用户不是很直观,大家其实蛮期待有一个报表

直接展示他们期待的内容。

这块就涉及到数据的提取和展示,数据的提取就不需要过多涉及了,就是一些不同的SQL查询。

数据的展示,就需要有各种开源javascript库的支持。毕竟自己去写一套图表展示javascript库是不太现实的,需要投入太多的经历,而且开源里也有很多实现。

开源实现报表功能的javascript库还是蛮多的,不过我比较推荐使用chartkick。不仅能够完全满足要求,而且相当简洁,使用起来比较方便。

关于chartkick的介绍大家可以看下http://chartkick.com/

在flask admin中的使用

  页面编辑

在flask admin中使用chartkick还是蛮简单的:

{% extends ‘admin/master.html‘ %}

{% block tail %}
  {{ super() }}
<script src="{{ url_for(‘static‘, filename=‘coverage/jquery.min.js‘) }}"></script>
<script src="{{ url_for(‘static‘, filename=‘highcharts.js‘) }}"></script>
<script src="{{ url_for(‘static‘, filename=‘chartkick/js/chartkick.js‘) }}"></script>
{% line_chart data with style="width:200px; height:20px;" %}
{% endblock %}

上述代码中extends和block语句大家可以忽略掉,是jinja2的模板,这块会稍微介绍下它的功能。

{% extends ‘admin/master.html‘ %}

这行语句的作用是集成master.html jinja2模板,对于想对外提供统一视图的WEB来说把基本的框架放到一个基本的jinja2模板中,所以其他的HTML继承这个模板是相关管用的。

{% block tail %}

这行语句的作用是继承admin/master.html模板中的tail blcok。关于extends和block语句的介绍大家可以参阅:http://docs.jinkan.org/docs/jinja2/

真正起作用的是:

<script src="{{ url_for(‘static‘, filename=‘coverage/jquery.min.js‘) }}"></script>
<script src="{{ url_for(‘static‘, filename=‘highcharts.js‘) }}"></script>
<script src="{{ url_for(‘static‘, filename=‘chartkick/js/chartkick.js‘) }}"></script>
{% line_chart data with style="width:200px; height:20px;" %}

 这四行语句,前三行比较好理解:就是导入JavaScript库,对于url_for语句大家可能不是很熟悉。对于上面例子,就直接理解为是在static目录下导入这些文件。

真正画图标的就是最后一条语句,相当简洁,而且也特别方便。上面画的是线性图表,对于其他各种类型的图标,chartkick也提供了对应的支持,使用同上面一样简洁。

flask admin application渲染页面

  在flask admin中渲染页面也是非常简单,对于flask admin只需要提供如下代码就可以了:

@app.route(‘/‘)
def index():
    data = {}
    # 增加自己想要展示的数据
    return render_teaplate(‘chartkick.html‘, data=data)

 出现的问题

  真正这么使用,发现页面并没有渲染出来,而且还一直报错。报这样的错误:

{% line_chart data with style="width:200px; height:20px;" %}
TemplateSyntaxError: Encountered unknown tag ‘line_chart‘. Jinja was looking for the following tags: ‘endblock‘. The innermost block that needs to be closed is ‘block‘.

然后大家就会很费解,怎么会出现这样的错误啊。我明明所有的JavaScript库都导入了啊,并且代码也跟官网上面的例子一模一样。

无论怎么确定就是没有问题,但是就是始终报错。

如何拍错

  对于这种情况下,你就应该冷静下来想想。对于line_chart语句,你会发现跟jinja2的模板语句类似,而且上面报错也出现了Jinja相关的字眼。这个时候,你大可以怀疑下line_chart具体是什么。

查询下chartkick库的代码,你会出现line_chart其实是注册到jinja2模板中的函数:

from ..template import CHART_HTML
from ..options import Options

register = template.Library()
register.tag(‘line_chart‘, functools.partial(chart, ‘LineChart‘))

但这个并不是jinja2系统自带的,在使用的时候直接导入可以了。

所以,在定义在定义app的下面增加以下语句就可以了:

app = Flask(__name__)
app.jinja_env.add_extension("chartkick.ext.charts")

  小结

chartkick还是蛮强大的,使用好chartkick会给WEB图表展示带来意想不到的效果。

 
时间: 2024-11-08 02:43:38

flask-admin章节一:使用chartkick画报表的相关文章

flask-admin章节四:flask session的使用

1. 关于session flask session可能很多人根本都没有使用过,倒是cookie大家可能使用得比较多.flask cookie使用起来比较简单,就两个函数,读取和设置. 具体使用方式如下: 读取cookie from flask import request @app.route('/') def index(): username = request.cookies.get('username') # 使用 cookies.get(key) 来代替 cookies[key] ,

flask-admin章节二:wtforms的使用以及在数据库场景中使用QuerySelectField代替SelectField

概述 flask admin可以支持自定义视图,对于涉及到比较复杂的视图可以选择继承flask_admin.BaseView来定义自己期待的结构. 自定义的视图的每个函数可以使用flask_admin.expose 语法糖来装饰,从而可以定义自己期待接收的HTTP方法和对外的URL. flask admin的良好封装,使得自定义视图非常的方便. 自定义视图中少不了涉及各种表单操作,对于不是很习惯写前端的朋友来说肯定压力比较大.不过,懒人自有懒的办法,可以选择 wtforms package提供的

flask-admin章节五:wtforms FormField超级炫酷使用

1. 概述 查看wtforms代码树fields目录的core.py,会发现在文件开头有这样的语句: __all__ = ( 'BooleanField', 'DecimalField', 'DateField', 'DateTimeField', 'FieldList', 'FloatField', 'FormField', 'IntegerField', 'RadioField', 'SelectField', 'SelectMultipleField', 'StringField', )

Flask 学习(一)概述及安装

Flask 概述及安装 Flask 简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 官方网址 :http://flask.pocoo.org/ 了解 Flask:首先,Flask 是Python 的一个Web 应用框架:其次,它是“微型”的 . 比起同类现有的web框架(如:Django),Flask 并不包含数据库抽象层,表单验证等.Flask 旨在保持代码简洁且易于扩展(Flask源码十

Java 报表工具

1.报表工具基本功能 报表工具一般提供一下功能: 支持多种数据源,而且数据源可配置. 支持脚本式的样式定义,一般是基于XML的,可灵活修改,一般提供样式编辑器.一般支持基于打印的样式定义,支持报表头尾.页面头尾.分组等概念. 将数据源和样式定义,输入到报表引擎,可输出为多种格式,包括PDF.EXCEL等. 2.报表工具的使用 从报表工具的基本功能来看,使用报表工具,核心是两个,一个是数据源的定义,一个是样式的定义. 数据源的定义比较简单,一般是数据库,按照报表工具要求的配置好连接池,依照业务需求

报表性能优化方案之多数据集实现层式报表

1. 问题描述若报表使用的数据量是上百万条的话,觉得报表展现的速度慢,可以使用层式报表来提高报表展现速度.但由层式报表章节可以得知,层式报表必须是单数据集,若是多数据集的模板且数据量又很大,想要提高报表的查询速度要如何实现呢? 2. 实现思路在定义数据集时通过使用数据库本身的行序号或者使用数据库函数生成行序号(即行号)并且在where条件中通过页码参数使得行号在一定范围内显示,点击自定义的上一页下一页按钮时重新传入页码参数取出相应的数据. 注:SQL Server2000无法生成行号,因此需要定

生成报表(转)

使用JasperReport+iReport进行WEB开发           一.JasperReport和iReport简介:  1.JasperReport简介 JasperReport是一个强大.灵活的报表生成工具,是开放源代码组织sf.net中的一个java 报表打印工程.能够展示丰富的页面内容,并将之转换成PDF,HTML,XML,Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)格式.该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,We

C#制作RDLC报表

报表以前我只做过水晶报表,但是最近发现家里的VS上面居然没有水晶报表,发现水晶报表现在貌似已经不能完全免费的使用了,为了保险起见,就用了VS自带的RDLC报表,用完感觉其实也是够用的嘛~ 建立一RDLC报表的过程主要是: 1.新建一个windows窗口,拖一个Reportview控件在上面,用来显示报表 2.新建一个类,构成数据源: 需要哪些字段,就在类中添加哪些,比如简单的如下: using System; using System.Collections.Generic; using Sys

浅谈 Flask 框架

一.框架对比 Django Flask Admin —— Model 原生无 Model 原生无 Form 原生无 Session 有 —— 颠覆认知操作 Django —— 教科书式框架 优势:组件全,功能全,教科书 劣势:占用资源,创建复杂度高 Flask —— 以简单为基准开发,一切从简,能省则省 优势:轻,块 劣势:先天不足,第三方组件稳定性较差 二.Flask入门 下载安装 下载:pip install Flask 注意:不要使用工具中的插件创建 Flask 项目 三行代码启动Flas