알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

django view와 template 연동하기 본문

Web /Django

django view와 template 연동하기

백곳 2017. 8. 12. 09:54


view와 template 연동하기


template 이란 html 문서 안에 python 코드를 집어 넣어 동적으로 html 페이지를 작성 도록 하는것을 말합니다. 


polls 디렉토리에 templates 라는 디렉토리를 만듭니다. Django 는 여기서 템플릿을 찾게될 것입니다.


방금 만든 templates 디렉토리 내에 polls 라는 디렉토리를 생성하고, 그 안에 index.html 을 만듭니다. 즉, template 은 polls/templates/polls/index.html 과 같은 형태가 됩니다


Django 에서 이 template 을 단순히 polls/index.html 로 참조할 수 있습니다


polls/templates/polls/index.html

{% if latest_question_list %}

    <ul>

    {% for question in latest_question_list %}

        <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>

    {% endfor %}

    </ul>

{% else %}

    <p>No polls are available.</p>

{% endif %}


poll/views.py

from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from .models import Question
from django.template import loader

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    template = loader.get_template('polls/index.html')
    context = {
        'latest_question_list': latest_question_list,
    }
    return HttpResponse(template.render(context, request))


위와 같이 수정 합니다. 

latest_question_list = Question.objects.order_by('-pub_date')[:5] 데이터베이스에서 Question.objects 를 pub_date날짜 순서대로 가져옵니다.


template = loader.get_template('polls/index.html')

은 템플릿을 가져 옵니다.


context = {

    'latest_question_list': latest_question_list,

}

은 사전 형식으로 변수를 만들어주고 

HttpResponse(template.render(context, request))

와 같이 전달해 줍니다. 

sudo service apache2 restart


위와 같은 소스을 너무 많이 사용하다 보니 Django 에서는 좀더 쉽게 사용 하기 위한 함수를 제공 합니다. 

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
from .models import Question
from django.template import loader

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    context = {'latest_question_list': latest_question_list}   
    return render(request, 'polls/index.html', context)



'Web > Django' 카테고리의 다른 글

Template 시스템 사용하기  (0) 2017.08.12
django 404 에러 일으키기  (0) 2017.08.12
Django view 작성하기  (0) 2017.08.11
django 관리 사이트 poll app 셋팅  (0) 2017.08.08
django 관리자 생성하기  (0) 2017.08.08
Comments