본문 바로가기
lang/Django

Django 앱 작성하기 part3 [view]

by Wordbe 2019. 7. 12.
728x90

view

view를 사용하여 만들 것 4가지

  1. 색인 페이지 (index) - 최근 질문들 표시
  2. 세부 페이지 (detail)
  3. 결과 페이지 (results)
  4. 투표 기능 (vote)

Django는 URL을 조사하여 화면에 보이게 될 view를 선택한다. - URLconfs 사용

또한 뷰는 PDF 생성이나 XML 출력, 실시간으로 ZIP파일을 만들 수 있다.


Django는 페이지의 정보가 담긴 HttpResponse 객체를 반환하거나, 예외를 발생시킨다.

Template namespacing

뷰에서 사용할 수 있는 템플릿을 작성하여 python 코드로 부터 디자인 영역을 분리한다!

Django에게 정확한 템플릿을 지정해주기 위하여 이름공간(namespacing)으로 구분짓는다.
polls/templates/polls 이 곳에 detail.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 %}

polls/view.py 에 돌아와서

from django.shortcuts import render, get_object_or_404

def detail(request, question_id):
    # 방법 1
    # try:
    #     question = Question.objects.get(pk=question_id)
    # except Question.DeosNotExist:
    #     raise Http404("Question does not exist")
    # return render(request, 'polls/detail.html', {'question': question})

    # 방법 2
    question = get_object_or_404(Question, pk=question_id)
    return render(request, 'polls/detail.html', {'question': question})

tip: render()를 사용하면 손쉽게 코드를 작성할 수 있다.

404 에러 일으키기

728x90

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

Django 앱 작성하기 part5 [test]  (4) 2019.07.12
Pycharm 단축키  (255) 2019.07.12
Django 앱 작성하기 part4 [form]  (242) 2019.07.12
Django 앱 작성하기 part2 [model]  (613) 2019.07.11

댓글