Linuxpia/웹 프로그램

[Django] 웹 프레임워크 URL 분리

Linuxpia4U 2025. 5. 1. 06:26
반응형

[Django] 웹 프레임워크 URL 분리

새로운 앱 pybo 등록

장고 웹프레임워크에 새로운 앱을 등록합니다. 등록된 앱은 몇 가지 절차를 밟아 사용자의 브라우저에 나타나게 설정합니다. 새 앱을 등록하는 방법은 'django-admin startapp 새로운앱이름'입니다.

새로 등록한 앱 확인

 

등록 후 해당 URL을 브라우저에서 확인

등록 후에 해당 URL을 브라우저에서 확인하면 다음과 같은 메시지가 뜹니다. 'Page not found(404)'는 HTTP 오류 코드 중에 하나로 사용자가 요청한 페이지를 찾을 수 없다는 것입니다. 장고는 오류 발생 시에 오류 원인을 웹 브라우저 또는 명령 프롬프트에 보여줍니다.

웹 브라우저에 보이는 오유 메시지와 코드

 

이 문제를 해결하기 위해서 다음과 같은 과정을 밟습니다.

메인 URLS.PY에 새 앱 URL 등록

메인 'urls.py'에 정보를 등록합니다. 'urlpatterns' 리스트에 패스 정보를 추가합니다. 아래 이미지의 22번째 줄은 새로 추가한 앱의 url 정보입니다. 내용은 브라우저에서 'pybo'로 요청하면 자동으로 'pybo/'로 인식하고 'views.py'에 있는 'index' 모듈을 보여 주라는 의미입니다.

메인 urls.py에 등록

 

문제 사태: 해당 모듈이 없음

그러나 여전히 브라우저에서는 해당 모듈이 없다는 에러가 발생합니다. 새 앱이 등록됐지만 새 디렉터리의 'views.py'에 모듈이 등록되지 않은 것입니다.

브라우저의 에러 메시지
확인된 서버 에러 메시지

서버 에러 메시지의 'pybo.views'에 'index' 모듈이 없다는 것입니다. 이 모듈을 만들기 위해 'pybo/views.py'에 'def index(request)'를 추가해서 해결합니다.

 

Django가 제공하는 HttpResponse 클래스를 가져와서 뷰 함수로 정의하여 웹브라우저에 해당 응답을 보여주는 것입니다.

 

  • from django.http import HttpResponse
    → Django가 제공하는 HttpResponse 클래스를 가져옵니다.
    이 클래스는 웹 브라우저로 텍스트나 파일 같은 데이터를 직접 응답할 때 사용합니다.
  • def index(request):
    → index라는 이름의 뷰 함수(view function) 를 정의합니다.
    사용자가 웹사이트에 접속할 때 호출되는 함수입니다.
    request는 사용자의 요청 정보를 담고 있는 객체입니다.
  • return HttpResponse("Hi, Welcome Home!")
    → 사용자의 요청에 대해 "Hi, Welcome Home!"이라는 문구를 담은 HTTP 응답을 웹 브라우저에 바로 반환합니다.

웹브라우저 표시 성공

일단 성공입니다. 'views.py'의 'index' 모듈이 작동된 것입니다.

 

웹 브라우저 결과

URL 분리하기

새로 만든 앱의 URL 정보를 메인 디렉터리에서 매번 정의하는 것은 불편하고 알아보는 것도 어렵습니다. 새 앱에서 만든 URL 정보는 해당 앱의 디렉터리에서 관리하는 것이 편리합니다. 즉 URL 관리를 분리하는 방법입니다.

URL 분리

 

'from django.urls import path'에 'include'를 추가합니다. 'from django.urls import path, include'로 수정하고 'urlpaterns'에 구체 정보를 추가합니다. "path('pybo/', include('pybo.urls')"로 변경합니다. 'pybo.urls'의 의미는 'pybo' 디렉터리에 있는 'urls.py'를 의미합니다. 이곳에서 관리하는 내용은 다음 이미지와 같습니다.

pybo디렉터리의 'urls.py'

이와 같은 방법으로 URL을 분리하여 관리합니다.

반응형