Saya mencoba memformat angka. Contoh:
1 => 1
12 => 12
123 => 123
1234 => 1,234
12345 => 12,345
Itu dianggap sebagai hal yang cukup umum untuk dilakukan tetapi saya tidak tahu filter mana yang seharusnya saya gunakan.
Sunting: Jika Anda memiliki cara Python umum untuk melakukan ini, saya senang menambahkan bidang yang diformat dalam model saya.
Jawaban:
Aplikasi memanusiakan Django yang berkontribusi melakukan ini:
Pastikan untuk menambahkan
'django.contrib.humanize'
keINSTALLED_APPS
daftar Anda disettings.py
file.sumber
Membangun jawaban lain, untuk memperluas ini ke mengapung, Anda dapat melakukan:
Dokumentasi:
floatformat
,intcomma
.sumber
Mengenai solusi Ned Batchelder, ini dia dengan 2 poin desimal dan tanda dolar. Ini seperti di suatu tempat
my_app/templatetags/my_filters.py
Maka kamu bisa
sumber
>>> currency(0.99958) u'$0.00'
Coba tambahkan baris berikut di settings.py:
Ini seharusnya bekerja.
Lihat dokumentasi .
pembaruan pada 2018-04-16:
Ada juga cara python untuk melakukan hal ini:
sumber
Jika Anda tidak ingin terlibat dengan lokal di sini adalah fungsi yang memformat angka:
Membuat filter templat khusus dari fungsi ini sepele.
sumber
The memanusiakan solusi baik-baik saja jika website Anda dalam bahasa Inggris. Untuk bahasa lain, Anda memerlukan solusi lain: Saya sarankan menggunakan Babel . Salah satu solusinya adalah membuat tag templat khusus untuk menampilkan angka dengan benar. Begini caranya: cukup buat file berikut di
your_project/your_app/templatetags/sexify.py
:Kemudian Anda dapat menggunakan tag templat ini dalam templat Anda seperti ini:
Tentu saja Anda bisa menggunakan variabel sebagai gantinya:
Catatan: yang
context
parameter saat ini tidak digunakan dalam contoh saya, tapi saya menaruhnya di sana untuk menunjukkan bahwa Anda dapat dengan mudah men-tweak tag template ini untuk membuatnya menggunakan apa pun yang dalam konteks Template.sumber
The memanusiakan app menawarkan bagus dan cara cepat format nomor tetapi jika Anda perlu menggunakan berbeda pemisah dari koma, sederhana itu hanya menggunakan kembali kode dari aplikasi memanusiakan , ganti char pemisah, dan membuat filter khusus . Misalnya, gunakan ruang sebagai pemisah:
sumber
Sedikit topik:
Saya menemukan pertanyaan ini sambil mencari cara untuk memformat angka sebagai mata uang, seperti:
Saya akhirnya melakukan:
Anda juga dapat melakukan, misalnya
{{ var|stringformat:"1.2f"|cut:"-" }}
menampilkan sebagai$50.00
(dengan 2 tempat desimal jika itu yang Anda inginkan.Mungkin sedikit di sisi hacky, tetapi mungkin orang lain akan merasa berguna.
sumber
Yah saya tidak bisa menemukan cara Django, tetapi saya memang menemukan cara python dari dalam model saya:
sumber
s really not correct not giving any reason. Here it
mudah: Django telah mendapat template khusus (mirip dengan Jinja2 - atau Jinja2) yang tidak memungkinkan fungsi python standar. Jadi jawaban ini sama sekali tidak berguna. Terlebih lagi, Django memiliki fungsi sendiri dalam mengelola ini dan menulis sesuatu yang baru yang berfungsi adalah ide yang tidak baik ...Perlu diketahui bahwa mengubah lokal adalah proses-lebar dan tidak aman thread (iow., Dapat memiliki efek samping atau dapat mempengaruhi kode lain yang dieksekusi dalam proses yang sama).
Proposisi saya: lihat paket Babel . Beberapa cara mengintegrasikan dengan template Django tersedia.
sumber
Belum yakin mengapa ini belum disebutkan:
https://docs.djangoproject.com/en/1.11/topics/i18n/formatting/#std:templatefilter-localize
Anda juga dapat menggunakan ini dalam kode Django Anda (template luar) dengan memanggil
localize(number)
.sumber
Berdasarkan jawaban muhuk saya melakukan
string.format
metode enkapsulasi tag python sederhana ini .templatetags
di folder aplikasi Anda.format.py
file di atasnya.Tambahkan ini ke dalamnya:
{% load format %}
{{ some_value|format:"{:0.2f}" }}
sumber
Jika seseorang menemukan ini,
Django 2.0.2
Anda dapat menggunakannyaPemisah ribuan . Pastikan untuk membaca format pelokalan juga.
sumber