반응형
주소와 화면을 연결하는 URL과 뷰
Django에서 웹 페이지의 주소(URL)와 실제 화면(HTML 등)을 연결하려면 URLconf(URL configuration)과 뷰(View)를 작성해야 합니다. 이 두 요소는 Django 웹 프레임워크의 핵심 구조로, 각각의 역할은 다음과 같습니다.
1. URLconf (URL 설정)
- URLconf는 사용자가 입력한 주소(URL)를 받아서 어떤 뷰 함수로 전달할지를 결정합니다.
urls.py
파일에 설정합니다.
예시: myapp/urls.py
from django.urls import path
from . import views # 같은 디렉토리의 views.py를 불러옴
urlpatterns = [
path('', views.home, name='home'), # http://도메인/ -> home() 실행
path('about/', views.about, name='about'), # http://도메인/about/ -> about() 실행
]
2. 뷰 (View)
- 뷰는 URLconf에서 연결된 요청을 받아 실제 처리하고 결과를 화면에 출력합니다.
views.py
파일에 함수형 또는 클래스형으로 작성합니다.
예시: myapp/views.py
from django.shortcuts import render
def home(request):
return render(request, 'home.html') # home.html 템플릿을 응답
def about(request):
return render(request, 'about.html') # about.html 템플릿을 응답
3. 템플릿 (HTML 화면 파일)
- 뷰에서
render()
함수를 통해 호출되는 HTML 파일입니다. - 일반적으로
templates
폴더 안에 위치합니다.
예시: templates/home.html
<!DOCTYPE html>
<html>
<head><title>홈</title></head>
<body>
<h1>홈 페이지입니다</h1>
</body>
</html>
4. 프로젝트 전체 URL 설정 (project/urls.py
)
myapp/urls.py
와 같이 앱 단위로 분리된 URL 설정을 프로젝트 전체에서 포함시킵니다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')), # myapp의 urls.py를 포함
]
요약
구성 요소 | 설명 |
---|---|
urls.py |
주소를 어떤 뷰로 보낼지 설정 |
views.py |
요청에 따른 로직 처리 및 화면 출력 |
templates/*.html |
사용자에게 보여줄 HTML 작성 |
render() |
HTML 파일을 브라우저에 응답 |
이러한 구조를 통해 Django는 URL → View → Template 흐름으로 웹 페이지를 동작시킵니다.
필요에 따라 GET/POST
요청 처리, 데이터베이스 조회, 폼 입력 처리 등도 뷰에서 담당합니다.