#python #flask #plotly-dash
Вопрос:
У меня есть простая панель навигации, которая отображает имя пользователя при входе пользователя в систему
Однако, когда я нажимаю на имя пользователя, оно отображает мимолетную ошибку (исчезает само по себе менее чем за 1 секунду, так быстро, что трудно прочитать сообщение об ошибке) an object was provided as
instead of a component, string, or number (or list of those)
. После отображения ошибки при повторном нажатии на имя пользователя он правильно перенаправляется на страницу.
У меня есть идентичный механизм обратного вызова страницы входа в систему, который работает просто отлично. Я не могу понять, что вызывает эту мимолетную ошибку и почему она все еще переходит на страницу со 2-й попытки.
Что может пойти не так и как это исправить?
header = dbc.Navbar( dbc.Container( [ dbc.Nav( [ dbc.NavItem(dbc.NavLink('user-name',id='user-name',href='Profile')), #displays the error when clicked dbc.NavItem(dbc.NavLink('login', id='user-action', href='Login')), ] ) ], ), ) #broken callback @app.callback( [Output('user-name', 'children'), Output('user-name', 'href'), ], [Input('page-content', 'children')]) def profile_link(content): if current_user.is_authenticated: return str(current_user.first),'/profile' else: return '',''
рабочий обратный вызов:
@app.callback( [Output('user-action', 'children'), Output('user-action', 'href'), ], [Input('page-content', 'children')]) def user_logout(input1): if current_user.is_authenticated: return 'logout', '/logout' else: return 'login', '/login'
Ответ №1:
Исправление оказалось очень простым — просто добавили тег «внешняя ссылка» в навигационную ссылку
dbc.NavItem(dbc.NavLink('user-name',id='user-name',href='/profile',external_link=True))