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

Django模板如何不修改XML源,将字典键名替换为用户友好文本

可行的实现方案

完全可以通过Django模板能力实现键名替换,无需修改原始XML数据,以下是两种最常用的实现方式:

方式1:自定义模板过滤器(推荐,复用性高)

适合多个模板都需要用到键名翻译的场景

  1. 在你的Django应用目录下新建templatetags文件夹,文件夹内新增空文件__init__.py,再新建过滤器文件比如kanji_tags.py
  2. 写入过滤器逻辑:
from django import template

register = template.Library()

# 补全所有你需要的键名映射即可
DICT_KEY_MAPPING = {
    'nelson_c': 'Nelson Classic',
    'nelson_n': 'Nelson New',
    'halpern_njecd': 'Halpern NJECD',
    'halpern_kkd': 'Halpern KKD',
    # 其余键的映射自行补全
}

@register.filter
def dict_key_humanize(key):
    # 没有匹配到映射的键会原样返回,避免报错
    return DICT_KEY_MAPPING.get(key, key)
  1. 修改你的模板代码,顶部先加载自定义标签,再调用过滤器:
{% load kanji_tags %}
<ul>
    {% for key, value in dictionaryEntries.items %}
    <li><b>{{ key|dict_key_humanize }}: </b>{{ value }}</li>
    {% endfor %}
</ul>

方式2:视图传映射表到模板(适合单页使用)

如果只有单个页面需要这个翻译,可以直接在视图层把映射表传入模板上下文,无需编写自定义标签:

  1. 视图函数中传入映射表:
def your_view(request):
    # 其余逻辑不变
    DICT_KEY_MAPPING = {
        'nelson_c': 'Nelson Classic',
        'nelson_n': 'Nelson New',
        # 其余映射补全
    }
    context = {
        'dictionaryEntries': your_dict_data,
        'key_mapping': DICT_KEY_MAPPING
    }
    return render(request, 'your_template.html', context)
  1. 模板中直接调用:
<ul>
    {% for key, value in dictionaryEntries.items %}
    <li><b>{{ key_mapping.key|default:key }}: </b>{{ value }}</li>
    {% endfor %}
</ul>

以上两种方式都完全不需要修改原始XML的标签内容,只需要维护一份映射表即可,后续新增键也只需要更新映射表就行。

内容的提问来源于stack exchange,提问作者Juan Camilo Orjuela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:36:00