当我转到特定网址'/ 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'
答案 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;每个页面看起来应该相同。