완숙의 블로그

[Django] Week 3_3 queryset & method 본문

Programing Language/Web_Django

[Django] Week 3_3 queryset & method

완숙 2019. 2. 26. 20:57

이제는 모델에서 어떻게 보여줄 건지에 대해 알아보자!

 

데이터베이스에 있는 정보를 템플릿으로 바로 어떻게 보낼 수 있을까?

바로 갈 수 없고! views.py 에서 처리를 해줘야 한다!

 

# views.py
from .models import Blog # 동일한 폴더를 말할 때 . 을 사용, 거기서 Blog라는 클래스를 불러와라

def home(request):
    blogs = Blog.objects # Blog 라는 클래스안에 있는 객체를 blogs라는 녀석에 담을 거다. = 쿼리셋
    return render(request, 'home.html', {'blogs' : blogs}) # 마지막 인자는 딕셔너리 형으로

 

모델로 부터 객체 목록을 받아올 수 있다.

이걸 query set 이라 한다!

이걸 보여주기 위한 것이 Method!

 

그 다음, blog 폴더안에 우리가 만들 html을 보여줄 template 폴더를 만든다.

안에 home.html 을 만들어준다.

 

html파일을 만들었으니, url을 연결해주어야 한다!

 

# url.py
from django.contrib import admin
from django.urls import path
import blog.views  # blog app의 views.py를 불러와라

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', blog.views.home, name = "home") # url뒤에 아무것도 없으면 blog.view.home 함수를 실행해라
]

 

 

자 이제서야 home.html을 작성할 수 있다.

 

앞에 views.py에 적은 딕셔너리의 키값을 템플릿 변수를 통해 다음과 같이 쓸 수 있다.

#home.html
{{blog}}

 

여기까지하고 서버를 켜보면,

#bash
$ python manage.py runserver

 

# 켜진 창
blog.Blog.object

이건 우리가 원하는 내용이 아니다! 우리는 아까 쓴 글에 대한 녀석들이 궁금한것..

지금 출력된 이 결과는 객체를 전달받았다! 까지 된 것. 이것을 쿼리셋이라 한다.

 

우리는 이 받은 객체를 가공하고 싶다. 즉 활용할 수 있게 하는 것이 Method!

지금은 어떻게 이녀석을 사용할 수 있는지 알아보자.

 

사용법

# 쿼리셋과 메소드의 형식
# 모델.쿼리셋(objects).메소드

 

이제 사용해보자!

# home.html
{% for blog in blogs.all%} <!-- blogs.all은 views.py에 home이라는 함수에서 받은 쿼리셋전부 -->
    <h1> {{blog.title}} </h1>
    <p> {{blog.pub_date}} </p>
    <p> {{blog.body}} </p>
    <br><br>
{%endfor%}

 

서버를 다시 켜보면!

 

2019-02-13 9 47 43

 

성공~!

Comments