Интеграция колбы с приложением Dash — маршрутизация / 404 Ошибка не найдена

#python #flask #plotly-dash #flask-login #werkzeug

Вопрос:

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

Вот моя структура файлов:

  • автор
    • войти
    • сервер
    • init.py
  • шаблоны
    • base.html
  • страницы
    • home.py
    • page2.py

index.py app.py

содержание app.py

 
import dash
import flask

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

server = app.server

 

содержание index.py

 app.layout = html.Div([

    # header
    html.Div([
        
        dcc.Link(
            href=get_relative_path('/home'),
        ),

        dcc.Link(
            href=get_relative_path('/archive'),
        ),

        dcc.Location(id='url'),

        html.Div(id='page-content', style={'margin-left': '2%'}),

])



# Render page content
@app.callback(Output("page-content", "children"),
              [
                Input('url', 'pathname')
              ]
             )
def display_content(pathname):

    if pathname == '/home':
        return home.layout

    elif pathname == '/archive':
        return archive.layout()
        
    else:
        return home.layout
      
 

содержание init.py

 from flask_login import LoginManager, login_required
from .server import server
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from werkzeug.serving import run_simple
from index import app as dashApp


@server.route('/dashboard')
@login_required
def render_dashboard():
    return redirect('/dashboard/')


app = DispatcherMiddleware(server, {
    '/dashboard': dashApp.server,
    #add dash routes
    })

if __name__ == '__main__':
    run_simple('0.0.0.0', 5000, app, use_reloader=True, use_debugger=True)

 

содержание server.py

 from flask import Flask

server = Flask(__name__, instance_relative_config=False)
 

Когда я пытаюсь перейти / щелкнуть ссылку на приложение dash, я получаю сообщение об ошибке 404 Не найдено. По какой-то причине при отладке кажется, что def display_content функция in index.py не запущена, а макет приложения / страницы не отображается.

Ответ №1:

Можете ли вы добавить завершающую косую черту в конце маршрута.

 @server.route('/dashboard/')