我做了一个记账小工具,按月把支出情况以折线图表示,但同一个图表在不同模板中渲染出来数值相反,一时间给我整懵了,不知道问题出在哪,恳请大家帮看看
在 html 模板 A 中渲染结果是这样的
但在 html 模板 B 中渲染结果确是这样的…?!
折线图生成函数如下
def make_echart():
line = Line(init_opts=opts.InitOpts(
height="400px", width="100%"
))
dates = list(set([
x.ctime.strftime("%Y-%m")
for x in Log.query.filter_by(type_name="支出").all()
]))
dates.sort()
outlay = []
for d in dates:
y,m = d.split("-")
outlay.append(round(
Log.query.with_entities(func.sum(Log.money)).filter(
extract('year', Log.ctime) == y,
extract('month', Log.ctime) == m,
Log.type_name == '支出',
Log.kind_name != '房贷'
).first()[0], 2)
)
line.add_xaxis(xaxis_data=dates)
line.add_yaxis(
series_name="支出",
y_axis=outlay,
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="average", name="平均支出")]
)
)
return line.render_embed()
折线图都是用同样的模板语法传进去的
<div class="echart">{{echart|safe}}</div>
我也在 flask shell 里面运行了图表生成函数,返回的代码里面数值是正值的,但不知道为什么到页面上就变成负值了