본문 바로가기

Python/Django

[Django] Django - 사용자 정의 오류 템플릿

이번에는 사용자 정의 오류 템플릿에 대해서 알아보겠습니다.

 

 

디버깅 모드에서는 기본 오류 페이지가 아래와 같습니다.

 

 

 

간단 버전 - 사용자 정의 오류 템플릿을 만들기 위해서는 아래와 같은 위치에 폴더 및 파일을 생성하면 됩니다.

파일위치 - ./my_site/templates/404.html (파일이름은 404 로 해야만 기본 템플릿을 데체할 수 있습니다)

 

{% comment %} ./my_site/templates/404.html {% endcomment %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>MY CUSTOM 404 PAGE</h1>
    {% block content %}
    {% endblock content %}
</body>
</html>

 

 

설정 파일 변경 - ./my_site/my_site/settings.py

 

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1']

 

 

결과 화면

 

 

 

핸들러를 사용하는 버전 - 파일명을 404로 직관적으로 표시하는 방법외에 핸들러를 사용하는 방법에 대해 알아보자.  404.html 을 error_view.html 로 변경합니다. 참고로 이전 블로그에서 프로젝트 레벨의 templates 위치를 설정했습니다.

 

.my_site/my_site/views.py 파일 생성 - 404 오류로 상태를 보고하도록 status=404를 추가

 

import imp
from django.shortcuts import render

def my_custom_page_not_found_view(request, exception):
    return render(request, 'error_view.html', status = 404)

 

프로젝트 레벨의  urls.py 에 등록

handler404는 Django가 참조하는 특정 변수입니다. Django가 가지고 있는 다양한 특정 핸들러에 대한 것은 관련 문서를 확인해주세요.

 

from cgitb import handler
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('my_app/', include('my_app.urls')),
    path('admin/', admin.site.urls),
]

handler404 = 'my_site.views.my_custom_page_not_found_view'

 

 

결과 화면 - 파일명을 변경한것(404.html --> error_view.html)을 표시하기 위해서 화면 문구를 추가했습니다.

 

 

만약에 파일명을 직관적으로 하고 싶다면 파일명을 변경하고 프로젝트 레벨의 views.py 파일에서 이름을 동일하게 변경하면 됩니다.

 

 

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

[Django] Django - (basic migrate) DB, model, field  (0) 2022.10.28
[Django] Django - 정적 파일  (0) 2022.10.27
[Django] Django - 상속(block)  (0) 2022.10.27
[Django] Django - Tags(url)  (0) 2022.10.27
[Django] Django - Tags(for, if)  (0) 2022.10.27