L' humaniser la solution est très bien si votre site web est en anglais. Pour les autres langues, vous avez besoin d'une autre solution: je recommande l'utilisation de Babel. Une solution est de créer un modèle personnalisé balise pour afficher les nombres correctement. Voici comment: il suffit de créer le fichier suivant 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)
Ensuite, vous pouvez utiliser ce modèle de balise dans vos modèles, comme ceci:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Pour un américain de l'utilisateur (la locale en_US) cette affiche 1,234.56.
- Pour un utilisateur français (locale fr_FR), cette affiche 1 234,56.
- ...
Bien sûr, vous pouvez utiliser des variables à la place:
{% sexy_number some_variable %}
Remarque: l' context
paramètre n'est actuellement pas utilisé dans mon exemple, mais je l'ai mis là pour montrer que vous pouvez facilement modifier ce modèle de la balise à utiliser tout ce qui est dans le modèle de contexte.