python - ifequal - Cómo deshabilitar el formato de FloatField en plantilla para Django
templates dirs django (7)
parece que no puedo encontrar una respuesta definitiva a este problema, y el irc de Django necesita autenticación para servicios ... Entonces mi pregunta es: ¿cómo se puede forzar algún tipo de formato para FloatFields en la plantilla cuando se usa Django?
El problema es simple, necesito simples números separados por puntos como este: 42547.34 Y termino con valores separados por comas ...
aquí hay un ejemplo de plantilla donde ocurre el problema:
{% for point in zone.points.all %}
{% if forloop.last %}
new google.maps.LatLng({{point.latitude|floatformat}},{{point.longitude|floatformat}})
{% else %}
new google.maps.LatLng({{point.latitude|floatformat}},{{point.longitude|floatformat}}),
{% endif %}
{% endfor %}];
Gracias por tu tiempo.
PD: no tengo este problema cuando uso los formularios generados por el administrador donde los flotadores aparecen correctamente (Mi configuración regional es en_US)
Ahora puede forzar que se imprima el valor sin localización.
{% load l10n %}
{{ value|unlocalize }}
Tomado de https://docs.djangoproject.com/en/1.7/topics/i18n/formatting/#std:templatefilter-unlocalize
Cuando se imprime alguna variable para javascrip, es mejor jsonificarla. Escriba una etiqueta de plantilla jsonify y luego use
{{value|jsonify}}
Etiquetas de plantilla
from django.core.serializers import serialize
from django.db.models.query import QuerySet
import json
from django.template import Library
register = Library()
def jsonify(object):
if isinstance(object, QuerySet):
return serialize(''json'', object)
return json.dumps(object)
register.filter(''jsonify'', jsonify)
Necesita crear un filtro de plantilla personalizado .
from django.template import Library
from django.utils.numberformat import format
register = Library()
@register.filter
def floatdot(value, decimal_pos=4):
return format(value, ".", decimal_pos)
floatdot.is_safe = True
Uso:
{{ float_var|floatdot }}
o {{ float_var|floatdot:2 }}
Puede usar un formats.py
personalizado.py (consulte " Creación de archivos de formato personalizado " en los documentos de Django) y defina THOUSAND_SEPARATOR
y DECIMAL_SEPARATOR
THOUSAND_SEPARATOR = ''''
DECIMAL_SEPARATOR = ''.''
Esta es una configuración global, por lo que afectará a todos los flotantes que se muestran en su sitio. Y deberá activar la localización ( USE_L10N
en su configuración.py).
Si tiene control sobre la plantilla, simplemente puede eliminar el filtro de floatformat
.
editar : No estoy seguro, pero tal vez eres una víctima de este error de Django: #13617 . Intente desactivar el soporte de localización en su settings.py y vea si las comas erróneas desaparecen:
USE_L10N = False
Si ese es el caso, eche un vistazo a las diversas soluciones temporales mencionadas en el informe de errores (la más simple es desactivar la localización si no la necesita de todos modos).
Tengo el mismo problema, y como dice piquadrat, es un error molesto relacionado con el soporte de localización. Cambiando USE_L10N = True
to False
resuelve esto, se supone que se fijará en Django 1.3.
Tengo un problema al representar los valores lat y lng. Mi solución fue:
{{ value|safe }}
{{ float_var|stringformat:"f" }}