You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Django自定义模板标签中判断球队颜色的大量elif冗余代码

优化方案:使用字典映射替代多重if-elif判断

这种写法逻辑清晰、扩展性极强,后续新增联赛球队只需要修改配置字典,不用调整业务判断逻辑。

优化后代码

# 提前在模块级别定义球队颜色映射配置,仅在模块加载时生成一次查询关系
COLOR_TEAM_MAPPING = {
    "green": ["Celtics", "Jazz"],
    "red": ["Hawks", "Bulls", "Rockets", "Pistons", "Clippers", "Heat", "Trail Blazers", "Raptors"],
    "grey": ["Nets"],
    "purple": ["Hornets", "Lakers", "Suns", "Kings"],
    "#b11226": ["Cavaliers"],
    "blue": ["Mavericks", "Grizzlies", "76ers"],
    "yellow": ["Nuggets", "Pacers"],
    "#1D428A": ["Warriors", "Timberwolves", "Thunder", "Knicks"],
    "#00471b": ["Bucks"],
    "gold": ["Pelicans"],
    "#0077C0": ["Magic"],
    "silver": ["Spurs", "Wizards"]
}

# 生成反向查询字典:球队名为key,颜色为value
TEAM_COLOR_MAPPING = {
    team_name: color 
    for color, teams in COLOR_TEAM_MAPPING.items() 
    for team_name in teams
}

@register.filter(name='teamColor')
def teamColor(team):
    # get方法第二个参数为找不到对应球队时的默认返回值,可自行调整
    return TEAM_COLOR_MAPPING.get(team, "black")

后续新增球队/联赛的维护方式

  • 已有颜色的新球队:直接在COLOR_TEAM_MAPPING对应颜色的球队列表中添加球队名即可
  • 新增颜色的球队:在COLOR_TEAM_MAPPING中新增颜色key,搭配对应球队列表即可
  • 如果球队量级很大,可以把COLOR_TEAM_MAPPING单独抽到独立的配置文件中,和业务逻辑完全解耦,修改配置无需触碰过滤器代码。

内容的提问来源于stack exchange,提问作者Ryan Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:45:08