Решение humanize подойдет, если ваш сайт работает на английском языке. Для других языков вам нужно другое решение: я рекомендую использовать Babel . Одним из решений является создание пользовательского тега шаблона для правильного отображения чисел. Вот как: просто создайте следующий файл в your_project/your_app/templatetags/sexify.py
:
# -*- coding: utf-8 -*-
from django import template
from django.utils.translation import to_locale, get_language
from babel.numbers import format_number
register = template.Library()
def sexy_number(context, number, locale = None):
if locale is None:
locale = to_locale(get_language())
return format_number(number, locale = locale)
register.simple_tag(takes_context=True)(sexy_number)
Тогда вы можете использовать этот шаблон тега в ваших шаблонах, как это:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Для американского пользователя (локаль en_US) это отображает 1 234,56.
- Для французского пользователя (локаль fr_FR) отображается 1 234,56.
- ...
Конечно, вы можете использовать переменные:
{% sexy_number some_variable %}
Примечание: параметр context
в настоящее время не используется в моем примере, но я поместил его там, чтобы показать, что вы можете легко настроить этот тег шаблона, чтобы он использовал все, что находится в контексте шаблона.