Я пытаюсь отформатировать числа. Примеры:
1 => 1
12 => 12
123 => 123
1234 => 1,234
12345 => 12,345
Это довольно распространенная вещь, но я не могу понять, какой фильтр я должен использовать.
Изменить: Если у вас есть общий способ Python сделать это, я рад добавить отформатированное поле в моей модели.
Ответы:
Предложенное Django гуманизированное приложение делает это:
Не забудьте добавить
'django.contrib.humanize'
в свойINSTALLED_APPS
список вsettings.py
файле.источник
Основываясь на других ответах, чтобы распространить это на поплавки, вы можете сделать:
Документация:
floatformat
,intcomma
.источник
Что касается решения Неда Батчелдера, то здесь оно с двумя десятичными знаками и знаком доллара. Это идет где-то как
my_app/templatetags/my_filters.py
Тогда ты можешь
источник
>>> currency(0.99958) u'$0.00'
Попробуйте добавить следующую строку в settings.py:
Это должно работать.
Обратитесь к документации .
обновление на 2018-04-16:
Существует также способ Python сделать это:
источник
Если вы не хотите связываться с локалями, вот функция, которая форматирует числа:
Создание пользовательского шаблона шаблона из этой функции тривиально.
источник
Humanize решение хорошо , если ваш веб - сайт на английском языке. Для других языков вам нужно другое решение: я рекомендую использовать Babel . Одним из решений является создание пользовательского тега шаблона для правильного отображения чисел. Вот как: просто создайте следующий файл в
your_project/your_app/templatetags/sexify.py
:Затем вы можете использовать этот шаблон тега в ваших шаблонах, как это:
Конечно, вы можете использовать переменные вместо:
Примечание:
context
параметр в настоящее время не используется в моем примере, но я положил его туда , чтобы показать , что вы можете легко настроить этот шаблон тег , чтобы сделать его использовать что - нибудь , что в контексте шаблона.источник
Приложение Humanize предлагает удобный и быстрый способ форматирования числа, но если вам нужно использовать разделитель, отличный от запятой, просто повторно использовать код из приложения Humanize , заменить символ разделителя и создать собственный фильтр . Например, используйте пробел в качестве разделителя:
источник
Немного не по теме:
Я нашел этот вопрос, когда искал способ отформатировать число в валюте, например так:
Я закончил тем, что сделал:
Вы также можете сделать, например,
{{ var|stringformat:"1.2f"|cut:"-" }}
чтобы отобразить как$50.00
(с 2 десятичными знаками, если это то, что вы хотите.Возможно, немного на хакерской стороне, но, возможно, кто-то найдет это полезным.
источник
Ну, я не смог найти способ Django, но я нашел способ Python внутри моей модели:
источник
s really not correct not giving any reason. Here it
просто: у Django есть специальный шаблон (похожий на Jinja2 - или это Jinja2), который не позволяет использовать стандартные функции Python. Так что этот ответ бесполезен вообще. Более того, у Django есть собственные функции, управляющие этим и пишущие что-то новое, что работает, на самом деле не очень хорошая идея ...Помните, что изменение языкового стандарта распространяется на весь процесс и не обеспечивает потокобезопасность (а именно, может иметь побочные эффекты или повлиять на другой код, выполняемый в том же процессе).
Мое предложение: проверить пакет Babel . Доступны некоторые способы интеграции с шаблонами Django.
источник
Не уверен, почему это еще не было упомянуто:
https://docs.djangoproject.com/en/1.11/topics/i18n/formatting/#std:templatefilter-localize
Вы также можете использовать это в своем коде Django (вне шаблонов), позвонив по телефону
localize(number)
.источник
Основываясь на ответе Мухука, я сделал этот простой
string.format
метод инкапсуляции тегов python .templatetags
в вашей папке приложения.format.py
файл.Добавьте это к этому:
{% load format %}
{{ some_value|format:"{:0.2f}" }}
источник
В случае, если кто-то наткнется на это,
Django 2.0.2
вы можете использовать этоРазделитель тысяч . Обязательно прочтите также локализацию формата .
источник