如何在Dash多页面应用中不修改文件名配置页面显示名称
解决Dash页面自定义显示名称的方法
要在不修改文件名的前提下修改下拉菜单中的页面显示名称,只需在页面注册时通过dash.register_page()的name参数指定自定义名称即可,具体操作如下:
1. 修改页面注册代码
在每个页面的dash.register_page()调用中添加name参数,传入你想要的显示文本。以pages/overview.py为例:
修改前:
dash.register_page(__name__)
修改后:
dash.register_page(__name__, name="1 - overview")
2. 验证效果
原app.py中的下拉菜单代码直接读取dash.page_registry里的page["name"]字段,这个字段会被你指定的自定义名称覆盖,无需修改app.py的代码,重启应用后下拉菜单中就会显示“1 - overview”。
修改后的完整代码示例
pages/overview.py
import dash import dash_bootstrap_components as dbc from dash import html # 添加name参数自定义显示名称 dash.register_page(__name__, name="1 - overview") SIDEBAR_STYLE = { "position": "fixed", "top": 0, "left": 0, "bottom": 0, "width": "16rem", "background-color": "#f8f9fa", } sidebar = html.Div( [ html.H2("Filter"), ], style=SIDEBAR_STYLE, ) content = html.Div(id="page-content") layout = dbc.Row( [ dbc.Col(sidebar, width=2), dbc.Col(content, width=9), ], className="g-0", )
app.py(无需修改,若需自定义home页面名称可参照上述方法)
import dash import dash_bootstrap_components as dbc from dash_bootstrap_templates import load_figure_template app = dash.Dash(__name__, use_pages=True, external_stylesheets=[dbc.themes.LUX] ) load_figure_template("LUX") navbar = dbc.NavbarSimple( children=[ dbc.DropdownMenu( [ dbc.DropdownMenuItem(page["name"], href=page["path"]) for page in dash.page_registry.values() if page["module"] != "pages.not_found_404" ], nav=True, label="More Pages", ), ], brand="- - - - Financial Evaluation", brand_href="/", id = "id-navbar" ) # 若需自定义home页面名称,可添加name参数 # dash.register_page("home", layout="We're home!", path="/", name="首页") dash.register_page("home", layout="We're home!", path="/") app.layout = dbc.Container( [ navbar, dash.page_container, ], className="dbc", fluid=True, ) if __name__ == "__main__": app.run_server(debug=True)
注:
dash.page_registry会自动收集每个页面注册时的name值,下拉菜单通过遍历这个注册表生成选项,因此指定name参数是最直接且符合Dash页面路由规范的方法。
内容的提问来源于stack exchange,提问作者olli
相关产品推荐
相关产品推荐

