2

I'm currently building a Flask Application & I'm trying to load a Plotly Dash App inside of it.

I was able to get this far from the following stackoverflow message board however I don't think I am doing something right (probably overlooking something?)

Running a Dash app within a Flask app

Any help here would be immensely appreciated

Here is my server.py code:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_moment import Moment 
from flask_login import LoginManager
from flask_pagedown import PageDown 
from flask_migrate import Migrate, MigrateCommand
from flask_sslify import SSLify
import os

import dash
import flask

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)

basedir = os.path.abspath(os.path.dirname(__file__))

Here is my views.py:

from flask import Flask, request, render_template, flash, redirect, 
session, url_for, g, jsonify, make_response
from services.email import send_invite_email, send_recover_email, 
send_password_was_changed_email
from werkzeug.datastructures import CombinedMultiDict
from werkzeug.utils import secure_filename
from app import server, app 
from app import db
from models import User, Post 
from forms import RegisterForm, LoginForm, ForgotForm, ProfileForm, 
ResetPassword, InviteForm, PostForm
from flask_mongoengine import MongoEngine
from flask_login import login_user, logout_user, current_user, 
login_required, LoginManager
import os
from flask_babel import Babel, lazy_gettext
from flask_uploads import UploadSet, IMAGES, configure_uploads
from flask_avatar import Avatar
from momentjs import momentjs
from flask_mail import Mail
from dash import Dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, State, Output
import pandas as pd
import plotly.graph_objs as go
from analysis import * 

df = pd.read_csv(

'/Users.../ds/total/main.csv')



@server.before_request
def before_request():
    g.user = current_user


@server.route('/index', methods=['GET','POST'])
def index():
    app.layout = html.Div([
    dcc.Graph(
    ..... [[more dash code]]

    ])

    app.layout = html.Div(children=[
          [[more dash code]]
    ])

Here is my server.py: from app import server, app server.run(debug=True)

When I run it all, I get:

Traceback (most recent call last):
File "/Users/..lib/python3.6/site-packages/flask/app.py", line 2292, in 
wsgi_app
response = self.full_dispatch_request()
File "/Users/lib/python3.6/site-packages/flask/app.py", line 1808, in 
full_dispatch_request
 self.try_trigger_before_first_request_functions()
 File "/Users/lib/python3.6/site-packages/flask/app.py", line 1855, in 
 try_trigger_before_first_request_functions
 func()
 File "/Users/lib/python3.6/site-packages/dash/dash.py", line 561, in 
_setup_server
self._generate_scripts_html()
File "/Users//lib/python3.6/site-packages/dash/dash.py", line 245, in 
_generate_scripts_html
self.scripts.get_all_scripts() +
File "/Users/lib/python3.6/site-packages/dash/resources.py", line 128, 
in get_all_scripts
return self._resources.get_all_resources()
 File "/Users/lib/python3.6/site-packages/dash/resources.py", line 57, 
in get_all_resources
self.get_inferred_resources() + self._resources
File "/Users//lib/python3.6/site-packages/dash/resources.py", line 86, 
in 
get_inferred_resources
for t in layout.traverse():
AttributeError: 'NoneType' object has no attribute 'traverse'
error
  • 2,356
  • 3
  • 23
  • 25
will
  • 511
  • 2
  • 11
  • 21
  • @PRMoureu here you go (sorry for not including it in original) – will Jul 08 '18 at 18:10
  • At first glance, you need some layout defined for dash `app.layout = ...` ([doc](https://dash.plot.ly/getting-started#dash-app-layout) ). Also you need to import the `views.py` at some point, after declaring `app` and `server` – PRMoureu Jul 09 '18 at 18:55

1 Answers1

0

I had the same error message when trying to run my Dash app and I fixed it thanks to this thread. It is said that you need to change app:server to index:app.server in the Procfile.

I'm not sure it applies in your case and if you even have a Procfile file but I'm putting this in here for people in the same situation I was.

Arlaf
  • 309
  • 1
  • 4
  • 8