目前,我有我的Django的自定义模板过滤器是这样的:编写一个将整数分钟转换为格式为“X小时(s)Y分钟”的字符串的函数的最佳方法是什么?
from django import template
register = template.Library()
@register.filter
def duration(value):
hours = value/60
minutes = value % 60
hours_string = str(hours) + (" hours" if hours > 1 else " hour" ) if hours else ""
minutes_string = str(minutes) + (" minutes" if minutes > 1 else " minute") if minutes else ""
return ' '.join("{hours} {minutes}".format(hours=hours_string, minutes=minutes_string).split())
一些可能的输出:
1 hour 25 minutes
2 hours
45 minutes
3 hours 1 minute
的' '.join(....split())
招是我从this solution了。我意识到我只需要在字符串的开头或结尾检查额外的字符串(因为当它是0小时或0分钟时),但它看起来有诀窍,也许比正则表达式更容易阅读人。
我也觉得我违反DRY,因为我几乎重复了两次完全相同的if-then
块。我在想是这样......
for i, unit in enumerate([hours, minutes]):
# Do some code.
return ' '.join("{hours} {minutes}".format(hours=value[0], minutes=value[1]).split())
,但我无法弄清楚如何在不另if-then
块“小时(S)”或“分钟”之间进行选择。另外两条短线if-then
每条线也看起来有点丑陋...
我会感谢任何建议或提示。谢谢!
更糟的是,你没有I18Nize它**。 –
'i18n'是我以后要看的很多东西。这是我现在应该担心的事吗?我不需要翻译网站上的每个文本吗? – hobbes3
如果你现在不担心,尤其是在这个问题上,你将会陷入一个痛苦的世界。 –