본문 바로가기

Python/Python(Django)

Django tutorial part3. 2/2 (화면 만들기)

1. 에러 처리

polls/templates/polls/detail.html 파일을 작성한다.

{{ poll.question }}

    {% for choice in poll.choice_set.all %}
  • {{ choice.choice_text }}
  • {% endfor %}

polls/views.py 파일의 detail 함수를 아래와 같이 수정한다.

from django.http import Http404

def detail(request, poll_id):
    try:
        poll = Poll.objects.get(pk = poll_id)
    except Poll.DoesNotExist:
        raise Http404
    return render(request, 'polls/detail.html', {'poll':poll})

대충 설명하면 poll_id로 검색해서 값이 없으면 404에러를 띄워라 하는 코드다

짧게 쓰면...

from django.shortcuts import render, get_object_or_404
def detail(request, poll_id):
    poll = get_object_or_404(Poll, pk = poll_id)
    return render(request, 'polls/detail.html', {'poll':poll})

이렇게 쓸수도 있다.


settings.py 파일을 수정해주자. 최초에는 DEBUG 모드로 설정되어 있기때문에 에러가 발생되면 에러 내용이 나오고 에러 페이지로 이동되지 않는다.

#최초 DEBUG = True
DEBUG = False
#최초 ALLOWED_HOSTS = []
ALLOWED_HOSTS = '*'



2. 결과 확인






3. Namespace 사용하기

polls/urls.py의 네임스페이스를 지정하여 사용하자

mysite/urls.py를 아래와 같이 수정하자.

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    url(r'^polls/', include('polls.urls', namespace = 'polls')),
)

polls.urls에 네임스페이스를 polls로 정했다.


이제 사용해보자

polls/template/polls/index.html 파일을 수정해보자

  • {{ poll.question }}

  • 잘 동작한다.






    반응형