#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/')