TypeError:render_template()接受1个位置参数,但给出了2个

时间:2019-03-11 19:29:25

标签: python python-3.x

我正在尝试使用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)

谢谢。 问候。

1 个答案:

答案 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中的键不应以字符串形式给出。应该是数据和布局。不是“数据”和“布局”。