블로그 메인 화면 출력
- 이제 [글쓰기]에서 쓴 내용을 블로그 메인 화면에 출력해보도록 합시다.
1 2 3 4 5 6 7 | [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]을 다음과 같이 수정합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | {% 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]를 다음과 같이 바꾸어 줍니다.
- 언어 코드도 한국어로 바꾸어줍시다.
1 2 3 4 5 | # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'ko-kr' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Seoul' |
- 시간이 제대로 적용되는지 확인하기 위해 서버를 다시 구동하고, 글을 작성하고 저장하여 봅시다.
- 제가 현재 글을 적는 시점의 시간입니다.
- 블로그 메인 화면을 출력하여 확인해보니, 현재 한국 시간이 적용되는 것을 볼 수 있습니다.
body 수정
- 내용에 원하지 않는 태그가 섞여서 나오는 이유에 대해 설명합니다.
- 장고는 기본적으로 <, >, &, ", ' 등의 문자를 자동적으로 'auto-escape' 합니다.
- 하지만, 이는 모든 것에 적용이 되는 것은 아니므로 이런 상황일 경우 다음과 같이 해결합니다.
- 장고 템플릿 필터 중 'safe'를 사용하여 해결합니다.
1 2 | [blogMain.html]을 열고 다음과 같이 수정합니다. {{ blog.body | safe }} |
적용 확인
- 서버를 구동시킨 후, 내용이 제대로 출력되는지 확인합니다.