달나라 노트

Python django project 1 - 게시판 만들기 ch.15 : humanize 본문

Python django/Python django project 1

Python django project 1 - 게시판 만들기 ch.15 : humanize

CosmosProject 2020. 12. 21. 03:59
728x90
반응형

 

 

게시글 디테일을 보면 위처럼 Registered at에 표시되는 값이 사실 우리가 보기엔 읽기가 어렵죠.

 

이에 대해 django의 humanize라는 것을 이용해봅시다.

 

 

 

 

pro/pro/settings.py의 app 부분을 아래처럼 수정합시다.

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

humanize app을 불러왔습니다.

 

 

 

 

그리고 post_detail.html 을 아래처럼 수정합시다.

{% extends 'base.html' %}
{% load humanize %}

{% block body %}
<div class="row mt-5">
    <div class="col-12 text-center">
        <h1>Post Detail</h1>
    </div>
</div>

<div class="row mt-5">
    <div class="col-12">
        <ul class="list-group">
            <li class="list-group-item">
                <b>Title</b><br/>
                {{ post_detail.post_title }}
            </li>
            <li class="list-group-item">
                <b>Contents</b><br/>
                {{ post_detail.post_contents }}
            </li>
            <li class="list-group-item">
                <b>Tags</b><br/>
                {{ post_detail.tags.all|join:', ' }}
            </li>
            <li class="list-group-item">
                <b>Writer</b><br/>
                {{ post_detail.post_writer }}
            </li>
            <li class="list-group-item">
                <b>Registered at</b>: {{ post_detail.registered_dttm|date:'Y-m-d H:i' }}
            </li>
        </ul>
    </div>
</div>

<div class="row mt-5">
    <div class="col-6">
        <button type="button" class="btn btn-primary btn-block" onclick="location.href='/post/post_list/'">Post List</button>
    </div>
    <div class="col-6">
        <button type="button" class="btn btn-primary btn-block" onclick="location.href='/post/post_register/'">Post Register</button>
    </div>
</div>
{% endblock %}

먼저 가장 위에서 {% load humanize %} 를 통해 humanize app을 load하였고

 

<b>Registered at</b>: {{ post_detail.registered_dttm|date:'Y-m-d H:i' }}

위처럼 registered_dttm 에 date filter를 추가하였습니다.

humanize app의 date filter는 설정한 형식으로 날짜를 표기해주는 역할을 합니다.

 

 

이외에도 humanize에는 여러 filter가 있는데 대표적으로 두 가지만 봐봅시다.

intcomma -> {{ price|intcomma }} 이처럼 표시하면 price field의 값을 천단위 콤마가 추가된 형식으로 변환하여 출력해줍니다.

safe -> {{ detail|safe }} 이처럼 표시하면 이미지가 포함된 상세정보 등을 표시할 때 이미지를 이미지 고유의 텍스트가 아닌 이미지 그 자체로 표시해줍니다.

 

 

 

728x90
반응형
Comments