Ошибка элемента имени пользователя Dash «объект предоставлен как дочерний»

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