블로그 메인 화면 출력
- 이제 [글쓰기]에서 쓴 내용을 블로그 메인 화면에 출력해보도록 합시다.
[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 »</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 }}
적용 확인
- 서버를 구동시킨 후, 내용이 제대로 출력되는지 확인합니다.