본문 바로가기

Pyhon/Django

[Pyhon/Django] 장고 기초#007. 장고 URLs & 뷰(View)

URLs

이전 문서에서 장고 관리자를 실행하기 위해서 웹 브라우저에 http://127.0.0.1:8000/admin/ URL을 입력하여 관리자 사이트에 접속했습니다. 이처럼 장고는 URLConf(URL Configuration)를 사용하여 요청 URL과 일치하는 뷰(View)를 찾습니다. 프로젝트에서 urls.py를 열어보면, 아래 코드를 확인 할 수 있습니다.

from django.contrib import admin
from django.urls import path

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

장고는 admin/으로 시작하는 URL을 뷰와 대조하여 찾습니다. 어떠한 패턴을 갖는 URL을 모두 작성 하기 어려우므로, 정규표현식을 사용하여 입력합니다. 장고 URL에 대한 공식 도큐먼트는 https://docs.djangoproject.com/en/2.0/topics/http/urls/에서 살펴볼 수 있습니다. 이제 애플리케이션에 새로운 URL을 입력하고 이에 연결되는 뷰를 작성하도록 하겠습니다. 블로그 애플리케이션 디렉토리에서 urls.py 파일을 새로 생성하고 다음과 같이 코드를 작성합니다.

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
]

post_list라는 뷰를 루트 URL('')에 추가하였습니다. 이 패턴은 http://127.0.0.1:8000/ URL로 요청이 들어왔을 때 views.post_list 뷰를 보여줍니다. 마지막 파라미터인 name은 URL에 별칭을 부여한 것으로써 뷰를 식별하기 위한 용도입니다. 다시 프로젝트 내 urls.py로 돌아가서 아래처럼 코드를 수정합니다. 요청 URL을 블로그 애플리케이션의 urls.py에서 처리하기 위해서 include 모듈을 import해야 합니다.

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

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

이제 루트 URL('')로 들어오는 요청들은 앞서 작성했던 블로그 애플리케이션의 urls.py로 연결됩니다.

뷰(View)

뷰는 애플리케이션에서 요청에 대한 처리 로직을 작성합니다. 앞서 views.post_list 뷰를 URL에 연결하였으므로, 해당 뷰를 작성하기 위해서 블로그 애플리케이션 내 views.py를 수정합니다.

from django.shortcuts import render

def post_list(request):
    return render(request, 'blog/post_list.html', {})

이 뷰에서는 블로그 디렉토리의 post_list.html 문서(HTML)를 웹 브라우저에 렌더(시각화)합니다. http://127.0.0.1:8000/에 접속하면, 다음 오류(404:Page not found)를 웹 브라우저에서 표시합니다. 아직 우리 프로젝트에서는 블로그 디렉토리 안에 post_list.html이라는 HTML 문서가 존재하지 않기 때문입니다.

다음 문서에서는 간단한 post_list.html 문서를 작성하도록 하겠습니다.