2015-03-31 160 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