django模板引擎中的印地语或波斯语数字

Ami*_*zli 5 python django persian django-templates hindi

我想用波斯语或印地语编码方式打印{{forloop.counter}}以获得"1 2 3 4 .."而不是"1 2 3 4 ...".我搜索了很多,但我找不到任何相关的功能.你介意帮帮我吗?

问候

roo*_*eki 7

您可以创建自己的模板过滤器.

@register.filter(name='persian_int')
def persian_int(english_int):
    devanagari_nums = ('?', '?', '?', '?', '?', '?', '?', '?', '?', '?')
    number = str(english_int)
    return ''.join(devanagari_nums[int(digit)] for digit in number)
Run Code Online (Sandbox Code Playgroud)


atp*_*atp 6

您可以使用自定义模板过滤器.我对Django的l10n库不太熟悉,知道他们是否为你做了这件事.

def devanagari_int(arabic_int):
    """ Converts an arabic numeral (ex. 5817) to Devanagari (ex. ????) """
    devanagari_nums = ('?','?','?','?','?','?','?','?','?','?')
    #    arabic_nums = ('?','?','?'....)
    #     farsi_nums = (...)
    number = str(arabic_int)
    return ''.join(devanagari_nums[int(digit)] for digit in number)

# register your filter, and then:
{{forloop.counter|devanagari_int}}
Run Code Online (Sandbox Code Playgroud)

确保将过滤器文件保存为UTF-8(或者使用相应的unicode表示).


jpi*_*pic 2

您可以制作一个模板过滤器,将数字转换为适当的编码。然后你可以这样使用它:

{{ forloop.counter|convert_to_hindi }}
Run Code Online (Sandbox Code Playgroud)