مجتبی کریمی
مجتبی کریمی
خواندن ۲ دقیقه·۵ سال پیش

نشان دادن سه رقم سه رقم اعداد در فریمورک جنگو

لوگو فریمورک جنگو
لوگو فریمورک جنگو

بعد از مدتی که با جنگو آشنا شدم و پروژه هامو باهاش ران میکردم فهمیدم خیلی از میانبرها یا به قول خودمون ترفندای جنگو به زبان فارسی آموزش داده نشده و پیدا کردنشون تو محیط وبسایت های انگلیسی زبان گاهی زمانبر و گیج کننده میتونه باشه.

یکی از اون میانبرها نحوه ی نشان دادن سه رقم سه رقم اعداد هستش که مثلا تو نشون دادن قیمت به کار میاد.

اول مطمئن بشید که در settings.py پروژه و در قسمت INSTALLED_APPS این عبارت رو به بقیه خط هایی که از قبل هستش اضافه کنید: 'django.contrib.humanize' یه چیزی شبیه این:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', ]


حالا کافیه داخل template های مد نظرتون ابتدا در خطوط ابتدایی با عبارت

{% load humanize %}

استفاده از این ویژگی را فعال کنید و تمام! حالا هر جایی که دوست داشتید داخل template تون جلوی عدد کافیه intcomma| بذارید. حواستون به علامت | قبل از لغت intcomma باشه شاید نبینیدش!!!

{{543210|intcomma}} خروجی: 543,210

اگر این ابزار کار نکرد و اعداد به همون شکل قبلی نمایش داده شدن احتمالا تو setting.py پروژه تون

LANGUAGE_CODE = 'fa'

تعریف شده که برای حل این مشکل کافیه یه دونقطهFalse جلوی intcomma بذارید که میشه اینطوری:

{{543210|intcomma:False}}

از اینجا به بعد یه توضیح تکمیلی در مورد اینکه چرا دونقطهFalse بهش اضافه کردیم میدم که خب شاید به دردتون نخوره ولی دونستنش میتونه اطلاعاتتونو بالاتر ببره :)

این ابزار یه خوبی دیگه داره: اینکه با فرهنگ هر کشور خودشو تطبیق میده مثلا اگه تو settings.py پروژه و در قسمت

LANGUAGE_CODE = 'de'

تعریف شده باشه، متوجه میشه که باید طبق زبان آلمانی سه رقم رو از هم جدا کنه و به جای ویرگول بین رقم ها از نقطه استفاده میکنه، اینطوری

45000 میشه45.000

چون آلمانیا به جای ویرگول از نقطه استفاده میکنن. حالا اگه به فارسی تنظیم شده باشه جنگو براش تعریف نشده که اعداد زبان فارسی رو چجوری رقم هاشو جدا کنه پس کاری روش انجام نشده. ما دو نقطهFalse رو در این شرایط بهش اضافه میکنیم که بهش بفهمونیم نمیخواد مطابق ربان ما اینکارو بکنه و همون به طور پیشفرض (طبق ربان انگلیسی) کارشو انجام بده؛ تمام!

حالا رو پروژه تون امتحان کنید و هر جایی نیاز به توضیح بیشتر داشتید خوشحال میشم باهام در ارتباط باشید :)

جنگوپایتونجدا کردن سه رقم
گیک علاقه‌مند به یادگیری و گسترش دانش
شاید از این پست‌ها خوشتان بیاید