在烧瓶内运行破折号应用程序

时间:2018-05-16 01:46:09

标签: python python-3.x flask plotly-dash

当我转到特定网址'/ dash'时,我希望能够从我的烧瓶应用中运行我的短划线应用。但是我收到以下错误。 'TypeError:视图函数未返回有效响应。该函数返回None或没有return语句结束。

flaskapp.py

app = Flask(__name__)

@app.route('/')
def index():
    return 'Welcome!'

@app.route('/dash')
def dash_chart():
    dashapp.start() # Run the dash app

if __name__ == "__main__":
    app.run(debug=True)

dashapp.py

def start():
    app = dash.Dash()
    app.layout = html.Div('Hello World')
    if __name__=='__main__':
        app.run_server(debug=True)

如果我对我的flaskapp.py进行了以下更改,

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server, url_base_pathname='/dashapp') #Results in an error

@server.route('/')
def index():
    return 'Welcome!'

@server.route('/dash')
def dash_chart():
    return flask.redirect('/dashapp')

if __name__ == "__main__":
    server.run(debug=True)

我收到以下错误,AttributeError:'NoneType'对象没有属性'traverse'

1 个答案:

答案 0 :(得分:0)

我认为您的问题是您从未真正构建过Dash应用程序。我得到了与您的代码相同的错误,但实际构建Dash应用程序(即设置Layout)似乎可以解决问题。请注意,错误回溯专门显示Dash无法遍历您的布局,因为它没有。尝试创建一个dash.Layout()来解析它,以便它可以提供服务。关于Dash' GitHub的issue #220的回答提到了同样的错误和解决方案。

对于MCVE:

import dash
import dash_html_components as html
import flask

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server, url_base_pathname='/dashapp')
app.layout = html.Div(children=[
    html.H1(children='Dash App')])

@server.route('/')
def index():
    return '''
<html>
<div>
    <h1>Flask App</h1>
</div>
</html>
'''

if __name__ == '__main__':
    server.run(debug=True)

除了host:port/应显示标题&#34; Flask应用&#34;以及host:port/dashapp应显示标题&#34; Dash App&#34;每个页面看起来应该相同。