【问题标题】:How to associate dictionnary keys with description using Flask如何使用 Flask 将字典键与描述相关联
【发布时间】:2015-03-31 09:12:53
【问题描述】:

我正在使用 Flask 构建我的 Web 应用程序。 我有一个字典,里面有一些键,不幸的是这些键对于用户来说不容易阅读。我想为每个键显示更好的名称和描述语句。

我的键显示在 jinja2 循环中,遍历字典。

我的实际页面:

key_1 : value_1
key_2 : value_2

我想要的页面:

Nice name for key1 (Description of the key1) : value_1
Nice name for key2 (Description of the key2) : value_2

我已经查看了 flask-babel 扩展,但它似乎不适合,因为 jinja2 模板中的键将在运行时显示。即使我手动创建一个包含所有可能键的 .po 文件,我也怀疑它是否能正常工作。

我正在考虑使用数据库进行通信,但我认为这可能不是最好的方法

key_1 = { name : "Nice name for key1"
          description : "Nice description for key1"
         }

您认为进行此类通信的最佳方式是什么?

编辑: 我的密钥来自从烧瓶传递给模板的字典。我认为字典的来源并不重要。

所以看起来像return render_template(mypage.html, dictionnary=dictionnary)

我并不是第一次尝试翻译我的好名字和描述,只是在字典的键和要显示的用户可以理解的名称和描述之间建立一个链接。我虽然使用flask-babel,因为它首先看起来像是一种进行此类链接的方式。不幸的是,我认为因为我的密钥是在运行时使用 jinja2 生成的,所以它不起作用。

{% for key,value dictionnary.iteritems()%}
<li> {{ key }}, {{value}} </li>
{% endfor %}

【问题讨论】:

    标签: python flask translation


    【解决方案1】:

    如果你想用不同的语言翻译你的内容,请使用 babel/flask-babel。

    对我来说,您在这里想要达到的目标并不完全清楚。

    1. 你从哪里得到钥匙?
    2. 你想翻译你的好名字和描述吗?

    不过,如果您希望将一些字符串(如 'weight_of_the_sun')转换为 'Weight of the sun',您可以考虑使用 inflection

    使用inflection.humanize

    import inflection
    
    print(inflection.humanize('weight_of_the_sun'))
    # Prints: Weight of the sun
    

    根据您想要做什么,其他一些功能也可能起作用。

    编辑:如果您不翻译任何内容,请不要费心查看 babel。

    我会推荐一些结构,例如:

    your_dict = {
        'key_1': {
            'name': "Whatever name",
            'value': Whatever value,
            'description': "Whatever description"
        }, ...
    }
    

    像这样使用,

    {% for key, struct in your_dict.iteritems() %}
      <li>{{ key }} {{ struct['name'] }} {{ struct['description'] }} {{ struct['value'] }}</li>
    {% endfor %}
    

    或,

    your_list = [
        {
            'key': 'key_1',
            'name': "Whatever name",
            'value': Whatever value,
            'description': "Whatever description"
        }, ...
    ]
    

    注意:我更喜欢这个,因为您可以订购 list

    像这样使用,

    {% for struct in your_list %}
      <li>{{ struct['key'] }} {{ struct['name'] }} {{ struct['description'] }} {{ struct['value'] }}</li>
    {% endfor %}
    

    【讨论】:

    • 我编辑了我的帖子,希望它能解决你的询问。我真的不需要翻译我的好名字。你可以看到我的目的是好的名字和描述是键的翻译。
    • 感谢您的编辑。我想我会以你的为例,遵循新领域的字典。我实际上考虑过,只是我一开始没有这些价值,所以我需要查看数据库来检索它们。只是觉得这会有点难看。
    • 如果数据库不干净,您可以随时对数据库进行更清洁的查询。如果我更了解您到底想要做什么,我可以建议如何使它更清洁。
    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 2017-06-13
    • 2015-09-30
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多