Django / 템플릿 동적 데이터와 쿼리셋
Web/Django

Django / 템플릿 동적 데이터와 쿼리셋

뉴비뉴 2019. 6. 30.

템플릿에 데이터 전달하기

템플릿에 데이터를 적용시켜 표시하려면 먼저 데이터를 전달하는 방법을 알아야한다. 이 작업은 뷰에서 이루어진다.

일단 블로그 메인 화면에 나타날 Post 들의 목록을 만들어 줄것이므로 views.py 를 열어 post_list 함수를 post_list 라는 함수로 바꿔주자.

def post_list(request):
	return render(request, 'blog/post_list.html')

이에 맞춰서 urls.py 와 post_list.html 파일의 이름도 수정해 준다.

템플릿 동적 데이터

블로그 글은 각각 다른 장소에 조각조각 나눠져있다.
Post 모델은 post_list 파일에, post_list 모델은 views.py 파일에 있다. 그리고 앞으로 템플릿도 추가해야 된다.

 

목표

http://localhost:8000/blog/1000 을 입력하면 해당 템플릿으로 이동하게 끔

#blog/views.py

from django.shortcuts import render
from django.utils import timezone
from .models import Post # 현재 디렉터리에 models에서 Post모델을 import

def post_list(request):
	
    qs = Post.objects.all() # 전체 글 목록을 가져와 qs에 저장한다.
    qs = qs.filter(published_date__lte=timezone.now()) # 발행날짜가 현재시간보다 작거나 같은 것과
    qs = qs.order_by('published_date') # 가져올 때는 정렬을 오름차순으로 정렬한다.
    return render(request, 'blog/post_list.html', {
        'post_list' : qs,
    })
    
# 동적 데이터를 뷰 단에서 준비해서 템플릿에 넘기는 코드이다.

Django 템플릿

장고는 내장된 템플릿 태그 라는 유용한 기능을 제공한다.

 

템플릿 태그란 HTMl 파이썬 코드를 바로 넣을 수 없다. 브라우저는 파이썬 코드를 이해할 수 없기 때문이다.

HTML는 정적이지만, 파이썬은 동적이다.

 

템플릿 태그는 파이썬을 HTML로 바꿔주어, 빠르고 쉽게 동적인 웹 사이트를 만들 수 있게 도와준다.

파이썬은 들여쓰기(인덴트)를 철저히 지키는 언어이다.

<body>
{{ post_list }}	# 결과 <QuerySet [<Post: Sample title>]>

{% for post in post_list%}
      {{ post.title }}
      {{ post.text }}
      {{ post.created_date }}
      {{ post.published_date }}
{% endfor %} # 결과 Sample title Test 2019년 6월 29일 11:05 오후 2019년 6월 29일 11:14 오후

<div>
	<p>published: {{ post.published_date }}</p>
	<h1><a href="">{{ post.title }}</a></h1>
	<p>{{ post.text|linebreaksbr}}</p> # linebreaksbr은 줄바꿈이 있는 부분에 <br>을 붙여서 줄 바꿈
    <p>{{ post.text|linebreaks}}</p> # linebreaks은 줄바꿈이 있는 부분에 <p>을 붙여서 줄 바꿈
</div>

 

 

 

댓글

💲 추천 글