Dash 应用程序下拉顺序在本地与 Heroku 上不同

问题描述 投票:0回答:1

我为专业开放水域游泳运动员构建并维护了一个名为 Open Water Insights 的数据洞察应用程序,这是一个多页 Dash 应用程序。其中一页旨在简单地显示从下拉列表中选择的一场比赛的结果。我希望下拉列表中的比赛顺序以最近的第一个出现,并且我已经通过以下回调在我的本地上正常工作,其中 custom_label() 函数只是从结果 csv 文件并构建一个用户友好的字符串以显示为下拉列表中的标签。结果目录中的所有 csv 文件均以 YYYY_MM_DD 开头命名,因此在创建 race_choices 列表时,它们按字母顺序排列,因此按时间顺序排列:

@app.callback(Output('results-race-dropdown', 'options'),
              [Input('results-gender-picker', 'value')])
def list_races(gender_choice):
    results_path = 'app_data/' + gender_choice + '/results'
    race_choices = os.listdir(results_path)
    race_choices.reverse()

    return [{'label': custom_label('app_data/' + gender_choice + '/results/' + i, 'event', 'location', 'distance', 'date'), 'value': i} for i in race_choices]

在本地运行应用程序时,一切都按预期工作:

但是,一旦部署到 Heroku,列表中的项目就完全乱序,没有明确的排序模式。

当结果文件被推送到并保存在 Heroku 服务器上时,它们似乎没有按字母顺序排列(因此按时间顺序排序)。另外奇怪的是,在另一个名为 Athlete Profiles 的页面上,我有一个包含所有运动员姓名的下拉列表,并且该下拉列表按字母顺序显示在本地和 Heroku 上,没有任何问题。

这里是我的 GitHub 的链接,如果有帮助的话。如有任何建议,我们将不胜感激,谢谢!

python plotly-dash multi-page-application
1个回答
0
投票

啊,这比我想象的要简单。我刚刚添加了一种按相反顺序对列表进行排序的方法。抱歉,这个简单的问题!

© www.soinside.com 2019 - 2024. All rights reserved.