본문 바로가기
Django

Django 템플릿

by nyanguk 2021. 1. 19.

이전 게시물에서 데이터 베이스의 값들을 템플릿으로 보내는 과정을 진행했고 이제는 그 값들을 이용하여 템플릿에 보여줄 차례이다.

 

템플릿 태그

파이썬을 사용하는 장고는 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 상에서의 데이터베이스는 공유되지 않으므로 결과가 다를 수 밖에 없다. 이로써 변경사항을 성공적으로 적용한 뒤 배포했다!

'Django' 카테고리의 다른 글

Django 템플릿 확장하기  (0) 2021.01.20
Django 부트스트랩  (0) 2021.01.19
Django 템플릿과 데이터베이스 연결  (0) 2021.01.18
Django ORM(Querysets)  (0) 2021.01.18
Django view 만들기  (0) 2021.01.17