De acuerdo con los documentos de Django, la etiqueta de plantilla de localización permite un control más detallado de la localización en plantillas que la configuración general USE_L10N = True.
Sin embargo, activar la localización no produce el mismo resultado que configurar USE_L10N = True cuando se combina con el filtro de fecha.
# USE_L10N = True in settings.py {% load l10n %} {{some_datetime_value|date}} # Date is shown and localizedcontra
# USE_L10N = False in settings.py {% load l10n %} {% localize on %} {{some_datetime_value|date}} {% endlocalize %} # Date is shown and NOT localized¿Por qué los dos resultados son diferentes? ¿Cómo puedo hacer que la etiqueta de localización se localice correctamente en combinación con el filtro de fecha?
Como Brian Destura señaló en los comentarios, esto parece un error de Django.
Convertir el objeto de fecha y hora en un objeto de fecha antes de pasarlo a la plantilla podría funcionar para un solo objeto, pero es muy inconveniente si tiene que acceder a campos del modelo que se almacenan como fecha y hora (por ejemplo, dentro de bucles for).
En caso de que alguien enfrente el mismo problema, un filtro personalizado que convierte el objeto de fecha y hora en un objeto de fecha funcionó para mí (esto es realmente lo que se supone que debe hacer el filtro de fecha incorporado).
etiquetas_personalizadas.py
@register.filter def get_date(value): return value.date()plantilla.html
{% load i10n %} {% load custom_tags %} {% localize on %} {{some_datetime_value|get_date}} {% endlocalize %} #localizes the format correctly