La solución humanize está bien si su sitio web está en inglés. Para otros idiomas, necesita otra solución: recomiendo usar Babel . Una solución es crear una etiqueta de plantilla personalizada para mostrar los números correctamente. Así es como: simplemente cree el siguiente archivo en 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)
Luego puede usar esta etiqueta de plantilla en sus plantillas de esta manera:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Para un usuario estadounidense (locale en_US), esto muestra 1,234.56.
- Para un usuario francés (locale fr_FR), esto muestra 1 234,56.
- ...
Por supuesto, puede usar variables en su lugar:
{% sexy_number some_variable %}
Nota: el context
parámetro no se usa actualmente en mi ejemplo, pero lo puse allí para mostrar que puede ajustar fácilmente esta etiqueta de plantilla para que use cualquier cosa que esté en el contexto de la plantilla.