Django 템플릿에서 숫자 형식 지정하기
템플릿 태그
{% number_format %} 태그
이 태그는 숫자를 원하는 형식으로 변환하는 데 가장 기본적인 태그입니다.
{% number_format number [format] %}
- number: 형식 지정하려는 숫자 변수
- format: 숫자 형식을 지정하는 선택적 인수 (생략 가능)
format 인수는 다음과 같은 형식으로 지정할 수 있습니다.
- d: 정수
- f: 부동 소수점 숫자
- e: 지수 표기법
- g: 일반적인 형식 (소수점 자릿수가 적으면 정수, 많으면 부동 소수점 표기)
- %: 백분율 표기
예를 들어, 다음과 같이 사용할 수 있습니다.
{% number_format price %} # 123456789
{% number_format price "f" %} # 123,456,789.00
{% number_format price "%.2f" %} # 123,456,789.00
{% number_format price "e" %} # 1.234568e+08
{% number_format price "g" %} # 123,456,789
{% number_format price "%0.2f" %} # 123,456,789.00
{% localize %} 태그
이 태그는 현재 로케일 설정에 따라 숫자를 자동으로 형식 지정합니다.
{% localize number %} # 현재 로케일 설정에 따라 숫자를 형식 지정
예를 들어, 한국어 로케일 설정에서는 다음과 같이 표시됩니다.
{% localize price %} # 123,456,789
템플릿 필터
floatformat 필터
이 필터는 부동 소수점 숫자를 원하는 형식으로 변환합니다.
{{ number|floatformat [format] }}
format 인수는 {% number_format %}
태그와 동일합니다.
{{ price|floatformat }} # 123456789.00
{{ price|floatformat "%.2f" }} # 123,456,789.00
{{ price|floatformat "e" }} # 1.234568e+08
{{ price|floatformat "g" }} # 123,456,789
{{ price|floatformat "%0.2f" }} # 123,456,789.00
numberformat 필터
이 필터는 {% number_format %}
태그와 동일하게 작동합니다.
{{ number|numberformat [format] }}
사용자 정의 필터
보다 복잡한 숫자 형식 지정을 위해 사용자 정의 필터를 만들 수도 있습니다.
from django.template import Library
register = Library()
@register.filter
def custom_number_format(number, format):
# 사용자 정의 숫자 형식 지정 로직
return formatted_number
{{ number|custom_number
Django 템플릿에서 숫자 형식 지정 예제
템플릿:
{% load static %}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>숫자 형식 지정 예제</title>
</head>
<body>
<h1>숫자 형식 지정 예제</h1>
<p>정수: {{ price|number_format }}</p>
<p>부동 소수점: {{ price|number_format "f" }}</p>
<p>백분율: {{ price|number_format "%" }}</p>
<p>현재 로케일 설정: {{ price|localize }}</p>
<p>반올림: {{ price|floatformat "0" }}</p>
<p>소수점 두 자리: {{ price|floatformat "%.2f" }}</p>
<p>천단위 구분: {{ price|floatformat "g" }}</p>
<p>{{ price|numberformat }}</p>
<p>{{ price|numberformat "f" }}</p>
{% load custom_filters %}
<p>사용자 정의 형식: {{ price|custom_number_format }}</p>
</body>
</html>
설정:
# settings.py
USE_THOUSAND_SEPARATOR = True
NUMBER_GROUPING = 3
사용자 정의 필터:
from django.template import Library
register = Library()
@register.filter
def custom_number_format(number, format):
# 사용자 정의 숫자 형식 지정 로직
if format == "currency":
return f"₩{number:,.2f}"
else:
return number
실행 결과:
<h1>숫자 형식 지정 예제</h1>
<p>정수: 123456789</p>
<p>부동 소수점: 123,456,789.00</p>
<p>백분율: 123,456,789.00%</p>
<p>현재 로케일 설정: 123,456,789</p>
<p>반올림: 123,456,789</p>
<p>소수점 두 자리: 123,456,789.00</p>
<p>천단위 구분: 123,456,789</p>
<p>123,456,789</p>
<p>123,456,789.00</p>
<p>₩123,456,789.00</p>
Django 템플릿에서 숫자 형식 지정을 위한 대체 방법
Django 템플릿에서 직접 Python 표준 라이브러리 함수를 사용하여 숫자를 형식 지정할 수 있습니다.
{% load static %}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>숫자 형식 지정 예제</title>
</head>
<body>
<h1>숫자 형식 지정 예제</h1>
<p>정수: {{ price|format }}</p>
<p>부동 소수점: {{ price|floatformat }}</p>
<p>백분율: {{ price|percentage }}</p>
<p>{{ price|floatformat }}</p>
<p>{{ price|floatformat "0" }}</p>
<p>{{ price|floatformat "%.2f" }}</p>
<p>{{ price|floatformat "g" }}</p>
</body>
</html>
{% load static %}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>숫자 형식 지정 예제</title>
</head>
<body>
<h1>숫자 형식 지정 예제</h1>
<p>정수: {{ price|format }}</p>
<p>부동 소수점: {{ price|floatformat }}</p>
<p>백분율: {{ price|percentage }}</p>
<p>{{ price|floatformat }}</p>
<p>{{ price|floatformat "0" }}</p>
<p>{{ price|floatformat "%.2f" }}</p>
<p>{{ price|floatformat "g" }}</p>
</body>
</html>
Javascript 라이브러리 사용
Javascript 라이브러리를 사용하여 템플릿에서 숫자를 동적으로 형식 지정할 수 있습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>숫자 형식 지정 예제</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
// Javascript 라이브러리를 사용하여 숫자 형식 지정
var price = 123456789.123456;
$("#formatted-price").text(price.toLocaleString());
});
</script>
</head>
<body>
<h1>숫자 형식 지정 예제</h1>
<p>정수: <span id="formatted-price"></span></p>
</body>
</html>
템플릿 태그 라이브러리 사용
django-number-format
과 같은 템플릿 태그 라이브러리를 사용하여 숫자 형식 지정 기능을 확장할 수 있습니다.
{% load number_format %}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>숫자 형식 지정 예제</title>
</head>
<body>
<h1>숫자 형식 지정 예제</h1>
<p>정수: {% number_format price %}</p>
<p>부동 소수점: {% number_format price "f" %}</p>
<p>백분율: {% number_format price "%" %}</p>
<p>{% number_format price "0" %}</p>
<p>{% number_format price "%.2f" %}</p>
<p>{% number_format price "g" %}</p>
</body>
</html>
각 방법은 장단점이 있습니다. Python 표준 라이브러리 사용은 간단하지만 기능이 제한적입니다. Javascript 라이브러리 사용은 더 많은 기능을 제공하지만 더 복잡합니다. 템플릿 태그 라이브러리 사용은 템플릿 코드를 간결하게 유지하면서 다양한 기능을 제공합니다.
python django