728x90
SMALL
Django는 MTV 모델로써, Model의 data를 사용자에게 보이는 template까지 전달해야 한다.
이전 post까지 MTV가 무엇인지는 파악했다고 생각하므로 바로 설명하겠다.
- view.py에서 model 가져오기
#blog/view.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post #blog(application) 의 모델 import
# Create your views here.
# request를 받아서 render method를 호출하여 post_index.html을 render(보여줌)
def post_index(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_index.html',{'posts' :posts})
위 코드를 보면,
1. 우선 view.py에서 blog의 model로부터 Post를 import한다.
2. 정의한 post_index()에서 QuerySet을 이용해 posts 변수를 만든다.
3. blog/post_index.html을 render할때, 'posts' 라는 매개변수로 posts를 전달해 준다.
-> 다른 언어를 해봤다면, 함수에 인자로 넘겨준다고 생각하면 편해요.
- template에서 전달받은 posts 이용
template에서 전달받은 인자를 사용하기 위해, 아래와 같이 사용한다.
{{ posts }}
#posts의 변수 하나씩 참조
{% for post in posts %}
{{ post }}
{{ post.title }} // 객체이므로 속성 이용
{% endfor %}
실제 사용한 코드와 화면
#blog/templates/blog/post_index.html
<html>
<head>
<title>SJ's Blog </title>
</head>
<body>
<center>
<h1 style="color:skyblue">hello world</h1>
</center>
<hr>
{% for post in posts %}
<div>
<h1><a href='/'>{{ post.title }}</a></h1>
<p> {{post.content|linebreaksbr}} </p>
<h5> author : {{ post.author }} , {{post.published_date}}</h5>
</div>
<hr/>
{% endfor %}
</body>
</html>
지금까지 posting으로 기본적인 web page를 구성하였다.
이 지식을 바탕으로 간단한 게시판을 만들어 보도록 하겠다 .
다음 posting에서 gogo~
LIST
'Web > django' 카테고리의 다른 글
(Django) first project8 - template 확장 (0) | 2020.08.14 |
---|---|
(Django) first project7 - Bootstrap 적용 및 정적파일 (0) | 2020.08.13 |
(Django) ORM과 QuerySets (0) | 2020.08.13 |
(Django) first project5 - Template (0) | 2020.08.12 |
(Django) first project 4 - View (0) | 2020.08.12 |