Ich versuche Zahlen zu formatieren. Beispiele:
1 => 1
12 => 12
123 => 123
1234 => 1,234
12345 => 12,345
Es scheint ziemlich üblich zu sein, aber ich kann nicht herausfinden, welchen Filter ich verwenden soll.
Bearbeiten: Wenn Sie eine generische Python-Methode haben, füge ich gerne ein formatiertes Feld in mein Modell ein.
Antworten:
Djangos Beitrag zur Humanisierung bewirkt Folgendes:
Stellen Sie sicher, dass Sie
'django.contrib.humanize'
IhrerINSTALLED_APPS
Liste in dersettings.py
Datei hinzufügen .quelle
Aufbauend auf anderen Antworten können Sie Folgendes tun, um dies auf Floats auszudehnen:
Dokumentation:
floatformat
,intcomma
.quelle
In Bezug auf die Lösung von Ned Batchelder gibt es hier 2 Dezimalstellen und ein Dollarzeichen. Das geht irgendwo so
my_app/templatetags/my_filters.py
Dann kannst du
quelle
>>> currency(0.99958) u'$0.00'
Versuchen Sie, die folgende Zeile in settings.py hinzuzufügen:
Das sollte funktionieren.
Siehe Dokumentation .
Update am 16.04.2018:
Es gibt auch eine Python-Methode, um dies zu tun:
quelle
Wenn Sie sich nicht mit Gebietsschemas beschäftigen möchten, finden Sie hier eine Funktion zum Formatieren von Zahlen:
Das Erstellen eines benutzerdefinierten Vorlagenfilters aus dieser Funktion ist trivial.
quelle
Die Humanisierungslösung ist in Ordnung, wenn Ihre Website auf Englisch ist. Für andere Sprachen benötigen Sie eine andere Lösung: Ich empfehle die Verwendung von Babel . Eine Lösung besteht darin, ein benutzerdefiniertes Vorlagen-Tag zu erstellen, um Zahlen richtig anzuzeigen. So geht's: Erstellen Sie einfach die folgende Datei in
your_project/your_app/templatetags/sexify.py
:Dann können Sie dieses Vorlagen-Tag in Ihren Vorlagen wie folgt verwenden:
Natürlich können Sie stattdessen Variablen verwenden:
Hinweis: Der
context
Parameter wird derzeit in meinem Beispiel nicht verwendet, aber ich habe ihn dort abgelegt, um zu zeigen, dass Sie dieses Vorlagen-Tag einfach optimieren können, damit es alles verwendet, was sich im Vorlagenkontext befindet.quelle
Die Humanize-App bietet eine schöne und schnelle Möglichkeit, eine Zahl zu formatieren. Wenn Sie jedoch ein anderes Trennzeichen als das Komma verwenden müssen, können Sie den Code aus der Humanize-App einfach wiederverwenden , das Trennzeichen ersetzen und einen benutzerdefinierten Filter erstellen . Verwenden Sie beispielsweise Leerzeichen als Trennzeichen:
quelle
Etwas abseits des Themas:
Ich habe diese Frage gefunden, als ich nach einer Möglichkeit gesucht habe, eine Zahl als Währung zu formatieren:
Am Ende tat ich:
Sie können dies auch tun, z. B.
{{ var|stringformat:"1.2f"|cut:"-" }}
als$50.00
(mit 2 Dezimalstellen, wenn Sie dies wünschen).Vielleicht etwas hackig, aber vielleicht findet es jemand anderes nützlich.
quelle
Nun, ich konnte keinen Django-Weg finden, aber ich habe einen Python-Weg in meinem Modell gefunden:
quelle
s really not correct not giving any reason. Here it
einfach: Django hat eine spezifische Vorlage (ähnlich wie Jinja2 - oder Jinja2), die keine Standard-Python-Funktionen zulässt. Diese Antwort ist also überhaupt nicht nützlich. Darüber hinaus hat Django eigene Funktionen, die dies verwalten und alles Neue schreiben, was funktioniert. Das ist wirklich keine gute Idee ...Beachten Sie, dass das Ändern des Gebietsschemas prozessweit und nicht threadsicher ist (iow., Kann Nebenwirkungen haben oder anderen Code beeinflussen, der innerhalb desselben Prozesses ausgeführt wird).
Mein Vorschlag: Schauen Sie sich das Babel- Paket an. Es stehen einige Möglichkeiten zur Integration in Django-Vorlagen zur Verfügung.
quelle
Ich bin mir nicht sicher, warum dies noch nicht erwähnt wurde:
https://docs.djangoproject.com/de/1.11/topics/i18n/formatting/#std:templatefilter-localize
Sie können dies auch in Ihrem Django-Code (außerhalb von Vorlagen) verwenden, indem Sie anrufen
localize(number)
.quelle
Basierend auf Muhuk Antwort habe ich dieses einfache Tag gemacht, das die Python-
string.format
Methode einkapselt .templatetags
in Ihrem Anwendungsordner.format.py
Datei darauf.Fügen Sie dies hinzu:
{% load format %}
{{ some_value|format:"{:0.2f}" }}
quelle
Falls jemand darauf stößt,
Django 2.0.2
können Sie dies verwendenTausend Separator . Lesen Sie auch die Formatlokalisierung .
quelle