Связывание app.route с app.layout во Flask / Dash под официанткой

Я пытался найти ответ на этот вопрос, но безуспешно. Думаю, мне не хватает понимания того, что происходит.

У меня есть приложение для тире, и я пытаюсь развернуть его на сервере. Я завернул его во фляжку и использую официантку, чтобы подать его.

Приложение простое, одна страница в формате HTML, пара раскрывающихся списков, они управляют отчетом. Детали я исключил.

Моя проблема в том, что я не вижу, как вызвать app.layout (где находится HTML) из оператора @ app.route.

Макет файла:

  • server.py
  • myappname (директория)
    • init.py
    • myappname.py
    • views.py

Код (скелетный)

# server.py

from waitress import serve
from myappname import app
serve(app, host='0.0.0.0', port=8050)



# myappname/__init__.py
    
from flask import Flask, render_template, request, session
from flask_session import Session
    
app = Flask(__name__)

import myappname.views


# myappname/views.py

from myappname import app
import flask 
@app.route('/')
def index():
    return flask.redirect('/myappname') 

# myappname/myappname.py
import dash
import dash_core_components as dcc
import dash_html_components as html
import numpy as np

from dash.dependencies import Input, Output

from flask import Flask, render_template, request, session
from flask_session import Session

# ... various procedures

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server, url_base_pathname='/myappname')

app.layout = html.Div([
    html.Div(rhubarb
    ),
    html.Div([rhubarb,rhubarb
    ])

@server.route('/')
def index():
    return flask.redirect('/myappname')

@app.callback(
    Output('Elementy', 'options'),
    [Input('Elementx', 'value')])
def fiddle1(selected_element):
    return blah

@app.callback(
    Output('Elementz', 'value'),
    [Input('Elementy', 'options')])
def fiddle1(available_options):
    return blah

Буду признателен, если кто-нибудь может помочь. Спасибо.


person Rory O'Connell    schedule 07.09.2020    source источник


Ответы (1)


Выкинув большую часть маленьких файлов, поместите приложение прямо в init .py. server.py теперь читает:

from waitress import serve
from myappname import app
application = app.server
serve(application, host='0.0.0.0', port=8050)
person Rory O'Connell    schedule 09.09.2020