Django 템플릿
이전 게시물에서 데이터 베이스의 값들을 템플릿으로 보내는 과정을 진행했고 이제는 그 값들을 이용하여 템플릿에 보여줄 차례이다.
템플릿 태그
파이썬을 사용하는 장고는 html상에서 파이썬을 사용 할 수 있도록하는 템플릿태그를 사용한다.
즉, 파이썬을 html 로 바꿔주는 역할이다.
쿼리셋을 템플릿에서 보여주기
이전 게시물에서 posts라는 쿼리셋을 render함수를 통해 post_list.html로 보내주었다.
이를 템플릿인 post_list.html에서 보여주기 위해서는 어떤 과정이 필요 할까?
변수 값 출력
가장 먼저 전달받은 쿼리셋을 출력하려면 템플릿 안에서 변수를 출력하는 표현을 알아야한다.
{{변수이름}} 변수이름을 중괄호로 2번 감싸 출력 시킬 수 있다.
전달받은 변수이름이 posts이므로 {{posts}} 라는 코드를 통해 쿼리셋을 출력 한다.
<!-- blog/templates/blog/post_list.html -->
<html>
<head>
<title>nyanguk의 Django 튜토리얼</title>
</head>
<body>
<div>
<h1> <a href="">nyanguk의 블로그</a></h1>
</div>
<div>
{{posts}}
</div>
</body>
</html>
위와 같이 코드를 작성하고 runserver를 실행시킨뒤 http://127.0.0.1:8000/로 접속해보자!
올바르게 동작 한다면 다음과 같이 posts쿼리셋의 내용이 출력되는 것을 확인 할 수 있다.
쿼리셋에서 데이터들만 보여주여 주기 위해 python의 for 반복문을 사용하면 된다.
<!-- blog/templates/blog/post_list.html -->
<html>
<head>
<title>nyanguk의 Django 튜토리얼</title>
</head>
<body>
<div>
<h1> <a href="">nyanguk의 블로그</a></h1>
</div>
<div>
{% for post in posts %}
{{ post }}
{% endfor %}
</div>
</body>
</html>
위와 같이 코드를 작성하면 쿼리셋이 아닌 쿼리셋 안에 있는 데이터들을 보여준다.
python을 공부했다면 익히 알고 있을 for사용법이다. 모른다해도 구글링을 통해 쉽게 이해 할 수 있으니 걱정 x
쿼리셋을 템플릿에서 예쁘게 보여주기
위의 결과에서 우리가 알고 있는 블로그의 게시물 목록과는 매우 다르다는 것을 알고있다. 제목과 게시날짜 또 일부 보이는 게시글을
목록화 하여 보여주기 위해 쿼리셋에 들어있는 각 요소 별로 Post의 필드 값을 이용해 제목,게시날짜,게시글을 출력 할 것이다.
<!-- blog/templates/blog/post_list.html -->
<html>
<head>
<title>nyanguk의 Django 튜토리얼</title>
</head>
<body>
<div>
<h1> <a href="">nyanguk의 블로그</a></h1>
</div>
<div>
{% for post in posts %}
<div>
<p>published: {{ post.created_date }}</p>
<h1><a href="">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaksbr }}</p>
</div>
{% endfor %}
</div>
</body>
</html>
위와 같이 코드를 변경하면 post 개수에 따라 div태그가 만들어진다. 이때 linebreaksbr은 br태그로 변경해주는 명령어이다.
그 뒤 다시 http://127.0.0.1:8000/ 로 접속해보면 아래와 같은 결과를 볼 수 있다.
pythonanywhere에서 배포하기
자 이제 pythonanywhere에서 변경사항을 적용해 보자! 굳이 두개로 나눌 필요는 없었지만 이미 두개로 나눈거 그냥 한다!
변경사항을 my-first-blog에 적용시킨다음 reload 를 눌러 사이트에 접속해보자
로컬과 pythonanywhere 상에서의 데이터베이스는 공유되지 않으므로 결과가 다를 수 밖에 없다. 이로써 변경사항을 성공적으로 적용한 뒤 배포했다!