多页破折号应用程序 [英] Multi-Page Dash Application

查看:139
本文介绍了多页破折号应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试构建一个多页Dash应用程序.当我运行以下代码时,一切正常,除了不会路由到我的/dash_1或/dash_2网址.想知道是否有人可以帮助我.

I'm trying to build a multi page Dash App. When I run the following code, everything works except it won't route to my /dash_1 or /dash_2 urls. Was wondering if someone could help me out.

我的结构如下:

dash-project/ app1/ app.py

dash-project/ app1/ app.py

app2/ app.py

app2/ app.py

server.py run.py

server.py run.py

我的run.py代码是

My run.py code is

from app import server as application
from app import app

import app_1.dash_1
import app_2.dash_2

我的app.py代码是:

My app.py code is:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from werkzeug.wsgi import DispatcherMiddleware
import os
import pandas as pd
import dash
import flask

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import plotly.graph_objs as go
from analysis import *

server=flask.Flask(name)
app = dash.Dash(name)
app.config.suppress_callback_exceptions = True

app.css.append_css({
‘external_url’: ‘https://codepen.io/chriddyp/pen/bWLwgP.css’
})

我的dash_1.py代码是:

My dash_1.py code is:

import dash 
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output 
import pandas as pd
import plotly.graph_objs as go
from analysis import * 

from app import app, server 

app = dash.Dash(name='dash_1', sharing=True, 
url_base_pathname='/dash_1', csrf_protect=False) 

app.config['suppress_callback_exceptions']=True

df = pd.read_csv('/Users/ds/app_1/main.csv')

layout = html.Div([
dcc.Graph(
    id='Senators ',
    figure={
        'data': [
            go.Scatter(
                x=df[df['candidate'] == i] 
['contributor_individual'],
                y=df[df['candidate_name'] == i]['contributor'],
                #z=df[df['candidate_name'] == i]['contributor'],
                text=df[df['candidate_name'] == i]['contributorl'],
                mode='markers',
                opacity=0.7,
                marker={
                    'size': 15,
                    'line': {'width': 0.5, 'color': 'white'}
                },
                name=i
            ) for i in df.candidate_name.unique()
        ],
        'layout': go.Layout(
            xaxis={'title': 'Contributor '},
            yaxis={'title': 'Contributor '},
            #margin={'l': 40, 'b': 40, 't': 10, 'r': 10},
            #legend={'x': 0, 'y': 1},
            hovermode='closest'
            )
        }
    )
])

layout = html.Div(children=[
html.H1(children='Senators '),

html.Div(children='''
    God Bless.
'''),

dcc.Graph(
    id='main.csv',
    figure={
        'data': [
        {'x':df['candidate'], 'y': df['sectorl'], 'type': 'bar'},
        {'x':df['candidate'], 'y': df['industry'], 'type': 'bar'},
        {'x':df['candidate'], 'y': df['contributor'], 'type': 'bar'},
        ],
        'layout': {
            'title': 'Let Them Eat...'
            }
        }
    )
])

我的dash_2.py代码是

My dash_2.py code is

import dash 
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd 

from app import app, server  

app = dash.Dash(name='dash_2', sharing=True, 
url_base_pathname='/dash_2', csrf_protect=False) 

app.config['suppress_callback_exceptions']=True 

df = pd.read_csv('/Users/ds/app_2/slice.csv')



layout = html.Div(children=[
html.H1(children='Bars'),

html.Div(children='''
    One Bite....
'''),

dcc.Graph(
    id='slice.csv',
    figure={
        'data': [
        {'x':df['Slice'], 'y': df['Score'], 'type': 'bar'},
        ],
        'layout': {
            'title': 'Bars'
            }
        }
    )


])

任何帮助将不胜感激-我似乎对此不知所措-谢谢!

Any help would be greatly appreciated - I can't seem to wrap my head around this - Thanks!

推荐答案

您需要将flask应用传递给Dash实例. 这样.

You need to pass your flask app to your Dash instance. Like this.

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

因此,请尝试导入服务器,并将其作为参数包含在app1和app2中的Dash实例中. 像这样:

So try importing server and include it as a parameter in your Dash instances in app1 and app2. Like so:

from app import server

app = dash.Dash(name='dash_1', sharing=True, 
url_base_pathname='/dash_1', csrf_protect=False, server=server)

app = dash.Dash(name='dash_2', sharing=True, 
url_base_pathname='/dash_2', csrf_protect=False, server=server)  

希望有帮助.

这篇关于多页破折号应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆