django复数模板

ApP*_*PeL 26 django django-templates

如何让django意识到单数形式countriescountry和不是countrie

Spi*_*ike 41

文档中,如果你有一个名为num_countries的模板变量,你可以写下这样的东西:

countr{{ num_countries|pluralize:"y,ies" }}
Run Code Online (Sandbox Code Playgroud)


Neb*_*sar 8

我知道这个问题是专门针对模板提出的,但是对于在“Python 端”Django 中搜索解决方案时遇到这个问题的任何人(就像我一样)

from django.template.defaultfilters import pluralize

def pluralize_countries(countries):
    return 'countr{}'.format(pluralize(countries, 'y,ies')
Run Code Online (Sandbox Code Playgroud)

复数函数查看第一个参数,看它是否是复数。让我们假设第一个参数始终是某种数组。所以:

if len(countries) > 1:
    # PLURAL!
else:
    # SINGLE!
Run Code Online (Sandbox Code Playgroud)

然后,它查看第二个参数,看看如果第一个参数是单数还是复数,该怎么办。复数代码的粗略草图如下所示:

def pluralize(arr, options):
    split_options = options.split(',')
    if len(arr) > 1:
        return split_options[1]
    else:
        return split_options[0]
Run Code Online (Sandbox Code Playgroud)

我知道复数形式稍微复杂一些。但简而言之,这就是它的作用。