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 파일을 수정해보자
잘 동작한다.
반응형
'Python > Python(Django)' 카테고리의 다른 글
Django tutorial part4. (Form 작성) (0) | 2013.04.19 |
---|---|
Django tutorial part3. 1/2 (화면 만들기) (0) | 2013.04.19 |
Django tutorial part2. (관리자 화면 활성화) (0) | 2013.04.18 |
Django Tutorial part1. (프로젝트 생성, Model 정의) (0) | 2013.04.18 |