我正在尝试使用Jinja将模板添加到我的代码中,但是它向我发送了错误消息。该程序的作用是实时绘制图形,我想使用CSS进行一些设计。
这是代码:
import dash
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly
import random
import plotly.graph_objs as go
from collections import deque
from flask import Flask, render_template
from flask import request, jsonify
X = deque(maxlen=20)
Y = deque(maxlen=20)
X.append(1)
Y.append(1)
app = dash.Dash(__name__)
app.layout = html.Div(
[
dcc.Graph(id='live-update-graph', animate=True),
dcc.Interval(
id='interval-component',
interval=3000,
n_intervals=0
)
]
)
@app.callback(Output('live-update-graph', 'figure'),
[Input('interval-component', 'n_intervals')])
def update_graph(n):
X.append(X[-1]+1)
Y.append(Y[-1]+(Y[-1]*random.uniform(-0.1,0.1)))
data = go.Scatter(
x = list(X),
y = list(Y),
name = 'Scatter',
mode = 'lines+markers'
)
return render_template('template.html', {'data':[data], 'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))})
if __name__ == '__main__':
app.run_server(debug=True)
谢谢。 问候。
答案 0 :(得分:0)
render_template()仅接受一个参数,并且HTML文件的名称应为字符串。
Read this 并根据该文档
flask.render_template(template_name_or_list,** context)
从具有给定上下文的template文件夹中渲染模板。
参数:
template_name_or_list –要呈现的模板的名称,或者 模板名称可迭代,第一个现有模板将被渲染
上下文 –在上下文中应该可用的变量 模板。
上下文是关键字参数,用于传递给HTML中的Jinja2模板。您将所有关键参数作为字典放置。 Flask不接受上下文。
return render_template('template.html', data=[data], layout=go.Layout(xaxis = dict(range=[min(X), max(X)]), yaxis = dict(range=[min(Y), max(Y)])))
关键字args中的键不应以字符串形式给出。应该是数据和布局。不是“数据”和“布局”。