알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
django view와 template 연동하기 본문
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 |