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: basta con crear 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)
continuación, puede utilizar esta etiqueta plantilla en sus plantillas de la siguiente manera:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Para un usuario americano (localidad en_US) esta muestra 1,234.56.
- Para un usuario francés (configuración fr_FR), muestra 1 234,56.
- ...
Por supuesto se pueden utilizar variables en su lugar:
{% sexy_number some_variable %}
Nota: el parámetrocontext
actualmente no se utiliza en mi ejemplo, pero me puso ahí para demostrar que puede ajustar fácilmente esta etiqueta de plantilla para hacer que use cualquier cosa que esté en el contexto de la plantilla.
Tenga cuidado si sus usuarios objetivo también están en Europa. Algunos países europeos como Alemania usan, como marca decimal. – tobltobs