El sistema de formateo de Django es capaz de mostrar fechas, horas y números en plantillas utilizando el formato especificado para la locale actual. También maneja la entrada localizada en formularios.
Dos usuarios accediendo al mismo contenido pueden ver fechas, horas y números formateados de diferentes maneras, dependiendo de los formatos para su locale actual.
Nota
Para habilitar el formato numérico con separadores de miles, es necesario establecer USE_THOUSAND_SEPARATOR = True en tu archivo de configuración. Alternativamente, podrías utilizar intcomma para formatear números en tu plantilla.
Nota
Hay una configuración relacionada USE_I18N que controla si Django debe activar la traducción. Consulta Traducción para obtener más detalles.
Cuando está habilitado el formato, Django puede utilizar formatos locales al parsear fechas, horas y números en formularios. Esto significa que intenta diferentes formatos para diferentes locales cuando adivina el formato utilizado por el usuario al ingresar datos en los formularios.
Nota
Django utiliza diferentes formatos para mostrar datos de aquellos que utiliza para parsear datos. De manera notable, los formatos para parsear fechas no pueden utilizar %a (nombre corto del día de la semana), %A (nombre completo del día de la semana), %b (nombre corto del mes), %B (nombre completo del mes) o %p (AM/PM).
Para habilitar un campo de formulario para que localice la entrada y salida de datos utilice su argumento localize:
class CashRegisterForm(forms.Form):
product = forms.CharField()
revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)
Django intenta utilizar un formato específico del lugar cada vez que sale un valor en una plantilla.
Sin embargo, puede no ser siempre apropiado utilizar valores locales – por ejemplo, si estás saliendo JavaScript o XML diseñados para ser legibles por máquinas, siempre querrás valores sin localizar. También puedes querer usar la localización en plantillas seleccionadas, en lugar de usar la localización en todas partes.
Para permitir un control fino sobre el uso de la localización, Django proporciona la biblioteca de plantillas l10n que contiene los siguientes tags y filtros.
localize¶Hace que se localice un valor único.
Por ejemplo:
{% load l10n %}
{{ value|localize }}
Para deshabilitar la localización en un valor único, utiliza deslocalizar. Para controlar la localización sobre una gran sección de una plantilla, utilice el localizar etiqueta de plantilla.
deslocalizar¶Hace que un valor único se imprima sin localización.
Por ejemplo:
{% load l10n %}
{{ value|unlocalize }}
Para hacer que se localice un valor único, utiliza localizar. Para controlar la localización sobre una gran sección de una plantilla, utilice el localizar etiqueta de plantilla.
Returns a string representation for numbers (int, float, or Decimal) with the configuración de localización formats applied.
Django proporciona definiciones de formato para muchas locales, pero a veces podrías querer crear tus propios, porque no existe un archivo de formato para tu locale o porque deseas sobreescribir algunos de los valores.
Para utilizar formatos personalizados, especifica la ruta donde colocarás archivos de formato primero. Para hacerlo, establece el parámetro FORMAT_MODULE_PATH en la configuración a la paqueta donde existirán los archivos de formato, por ejemplo:
FORMAT_MODULE_PATH = [
"mysite.formats",
"some_app.formats",
]
Los archivos no se colocan directamente en este directorio, sino en un directorio llamado como la locale y deben llamarse formats.py. Ten cuidado de no poner información sensible en estos archivos ya que los valores dentro pueden ser expuestos si pasas la cadena a django.utils.formats.get_format() (utilizado por el date filtro de plantilla).
Para personalizar los formatos del inglés, se necesitaría una estructura como esta:
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
donde formats.py contiene definiciones de formato personalizadas. Por ejemplo:
THOUSAND_SEPARATOR = "\xa0"
para utilizar un espacio no rompeable (Unicode 00A0) como separador de miles en lugar del predeterminado para el inglés, una coma.
Algunas locales utilizan formatos sensibles al contexto para números, que el sistema de localización de Django no puede manejar automáticamente.
La formación de números suiza tradicionalmente varía según el contexto. Por ejemplo, los valores monetarios pueden utilizar un punto como separador decimal (Fr. 23.50), mientras que las mediciones a menudo utilizan una coma (22,5 m). El sistema de localización de Django no soporta tales variaciones específicas del contexto automáticamente.
El formato de ubicación proporcionado por Django utiliza los separadores generales, una coma para decimal y un espacio para separador de miles.
may 31, 2026