2015-03-31 119 views
0

我正在使用Flask构建我的Web应用程序。 我有一个与它的一些关键字的词典,不幸的是这些键不容易阅读的用户。我想为每个键显示更好的名称和说明句子。如何使用Flask将描述键与描述相关联

我的键的显示在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 

我已经看在烧瓶通天扩展,但它似乎并不因为在Jinja2的按键,以适应模板将在运行时显示。即使我手动使用所有可能的键创建.po文件,我怀疑它会正确工作。

我想使用一个数据库,使对应关系,但我认为这可能不是做

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

你觉得会是什么做这样的对应关系的最佳途径的最好方法是什么?

编辑: 我的钥匙来自从瓶子传递到模板的字典。我不认为这个词典来的地方很重要。

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

我不是真的想在第一时间翻译我的漂亮的名称和说明,只是使dictionnary的按键和名称和说明之间的链接,以显示它们是可以理解的用户。我虽然使用烧瓶巴贝尔,它首先看起来像做这样的链接的方式。不幸的是,我认为,因为我的密钥是在运行时与jinja2生成的,它不会工作。

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

回答

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 %} 

OR,

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 %} 
+0

我编辑我的职务,希望这将解决你的审讯。我真的不需要翻译我的好名字。你可以看到我的目的是好名字,而描述就是密钥的翻译。 – MathiasDesch 2015-03-31 09:52:46

+0

感谢您的编辑。我认为我会像你的例子那样,遵循新领域的词典。我真的想过,只是因为我没有这些价值,所以我需要查看一个数据库来检索它们。只是觉得这会有点难看。 – MathiasDesch 2015-03-31 10:06:41

+0

如果不干净,您可以随时向数据库清理程序发出查询。如果我更了解你正在努力做什么,我可以建议如何使它更清洁。 – adarsh 2015-03-31 10:09:41