멋쟁이 사자처럼 at 한국교통대학교 7기

2019 KNUT X LIKE LION #7

블로그 메인 화면 출력

토픽 멋쟁이 사자처럼 at 한국교통대학교 7기 > 웹 애플리케이션 개발 > Django
블로그 메인 화면 출력

  • 이제 [글쓰기]에서 쓴 내용을 블로그 메인 화면에 출력해보도록 합시다.

 

[blogapp]-[views.py]에서 blogMain()함수를 다음과 같이 수정하여 줍니다.
from .models import Blog

def blogMain(request):
    blogs = Blog.objects.all()

    return render(request, 'blogMain.html', {'blogs': blogs})
  • 모델을 import하고 데이터베이스에 저장된 객체를 모두 가리키는 객체 'blogs'를 만듭니다.
  • 객체 'blogs'를 'blogMain.html'에 보내줍니다.

 

  • [blogMain.html]을 다음과 같이 수정합니다.
{% extends 'base.html' %}

{% block content %}

    <br>

    {% for blog in blogs %}
        <main role="main" class="container">
            <div class="jumbotron">
                <h1>제목 : {{ blog.title }}</h1>
                <br>
                <h4>작성일 : {{ blog.pub_date }}</h4>
                <br>
                <h4>작성자 : {{ blog.author }}</h4>
                <br>
                <p class="lead">{{ blog.body }}</p>
                <br>
                <a class="btn btn-lg btn-primary"
                   href="{{ site.baseurl }}/docs/{{ site.docs_version }}/components/navbar/"
                   role="button">View navbar docs &raquo;</a>
            </div>
        </main>
    {% endfor %}

{% endblock %} 
  • 'blogs' 객체 넘긴 것을 템플릿 태그 중 for를 사용하여 반복문을 돌면서 하나씩 블로그 객체를 반환합니다.
  • 하나씩 블로그 객체의 제목, 작성일, 작성자, 내용을 템플릿 변수를 사용하여 출력합니다.

 

 

 

적용 확인

  • 서버를 구동하고 블로그 메인 화면에 블로그 객체 내용이 제대로 출력되는지 확인합니다.

 

  • 뭔가 잘못된 부분이 보입니다. 어디가 잘못되었는지 살펴보고 다시 수정해보도록 합시다.
     
  • 제목 : 정상적으로 출력됩니다.
  • 작성일 : 얼핏보면 정상적으로 출력되는 것처럼 보이나, 시간이 잘못되었습니다.
    이는 예전 토픽에서 날짜를 자동으로 저장하게 하고 나서 확인을 제대로 넘어갔기 때문입니다.
    나머지 다른 문제점들을 파악한 뒤에 바로 수정을 하도록 합시다.
  • 작성자 : 정상적으로 출력됩니다.
  • 내용 : 첫번째 글처럼 CKEditor를 적용하기 전에 글을 적은 경우 문제가 없습니다만, 적용 후 이미지 파일을 업로드하거나 글자에 여러 효과를 적용하게 되니 정상적으로 출력이 안됩니다.

 

 

 

작성일 수정

  • 작성일에서 정확히는 날짜가 잘못되었는데, 이는 기본적으로는 장고에서 UTC(협정 세계시)를 사용하기 때문입니다.
    참고)협정 세계시 : https://ko.wikipedia.org/wiki/협정_세계시
     
  • UTC(협정 세계시)에 따르면 KST(한국 표준시)는 UTC에 9시간을 더한 것과 같습니다.
  • 따라서 이를 수정하기 위해 [settings.py]를 다음과 같이 바꾸어 줍니다.
  • 언어 코드도 한국어로 바꾸어줍시다.
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ko-kr'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Seoul'

 

  • 시간이 제대로 적용되는지 확인하기 위해 서버를 다시 구동하고, 글을 작성하고 저장하여 봅시다.

 

  • 제가 현재 글을 적는 시점의 시간입니다.

 

  • 블로그 메인 화면을 출력하여 확인해보니, 현재 한국 시간이 적용되는 것을 볼 수 있습니다.

 

 

 

 

body 수정

 

  • 내용에 원하지 않는 태그가 섞여서 나오는 이유에 대해 설명합니다.
  • 장고는 기본적으로 <, >, &, ", ' 등의 문자를 자동적으로 'auto-escape' 합니다.
  • 하지만, 이는 모든 것에 적용이 되는 것은 아니므로 이런 상황일 경우 다음과 같이 해결합니다.
  • 장고 템플릿 필터 중 'safe'를 사용하여 해결합니다.
[blogMain.html]을 열고 다음과 같이 수정합니다.
{{ blog.body | safe }}

 

 

 

적용 확인

  • 서버를 구동시킨 후, 내용이 제대로 출력되는지 확인합니다.

 

 

 

 

댓글

댓글 본문