[Django] 01. urls.py 파일 초기 설정과 첫 template 생성

느려도 꾸준한 발걸음·2024년 6월 18일
0

Django Web dev

목록 보기
5/12

가상환경 설치, 초기 세팅, project및 app생성, 서버 시작은 모두 완료된 상태라 가정하고 글을 작성하겠습니다.

우선 가장 먼저, 생성된 app(Django에서는 기능을 app단위로 구분합니다) 폴더 안에 urls.py 파일을 만들어주겠습니다.

JS나 Java기반의 라이브러리나 프레임워크를 사용해 웹 개발을 해보신 분들이라면 익숙하실, 라우팅 작업을 위함입니다.

저는 연습을 위해 calc라는 이름의 앱을 프로젝트 폴더 내에 생성해주었습니다.
사진에 보이는 firstdjango폴더는 전체 프로젝트 폴더입니다.

장고 프로젝트를 처음 생성하면, 전체 프로젝트 폴더엔 기본적으로 urls.py파일이 자동 생성됩니다.

내부는 다음과 같이 생겼는데, urlpatterns라는 리스트 안에 라우팅을 해주면 됩니다. 리스트의 첫 요소인 홈 디렉토리는 제가 직접 넣어준 것입니다.

app을 생성하고 나면, app의 urls파일들을 반드시 전체 프로젝트 urls파일에 include시켜줘야 합니다.

이를 위해, calc폴더 내부에 urls.py 파일을 만들어주겠습니다.

다음과 같이, calc app내의 home페이지만 우선 생성을 해봤습니다.
path함수의 첫 인자는 url경로, 두 번째 인자는 해당 경로로 접속하였을 때 실행할 함수를 적어주면 됩니다.

views.home이라는 함수는 calc디렉토리 내 views.py파일에 제가 직접 생성한 함수입니다.

유저들이 홈 디렉토리로 접속하게 되면, 저는 home.html파일을 render하도록 함수를 작성해주었습니다. 렌더 함수의 세 번째 인자는 DTL에 사용할 변수입니다.

React 개발 경험이 있으신 분들이라면, prop의 개념으로 이해하시면 됩니다.

html파일들은 프로젝트의 최상단 디렉토리에 templates라는 폴더를 만들어 관리하겠습니다.

템플릿을 생성하면, settings.py 파일의 다음 내용들이 잘 적혀있어야 합니다!

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [os.path.join(BASE_DIR, 'templates')],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

완성된 폴더 구조는 아래와 같습니다.

이제, html파일 내부에 페이지 레이아웃을 작성해주면 되겠네요.

다음과 같이 Django html파일 내에서, {{}} 속에 해당 페이지를 render할 때 전달해준 세 번째 인자의 변수를 직접 넣어 동적인 페이지를 구성할 수 있습니다.

이를 DTL(Django Template Language) 이라 부릅니다.
JS나 TS기반 개발 경험이 있으신 분들이라면, JSX, TSX와 문법이 비슷하다고 느끼셨을 겁니다.

DTL은 단순 변수 뿐 아니라, html내에 파이썬의 모든 기능을 작성하도록 허용해 더욱 동적인 페이지를 구성할 수 있게 합니다.

DTL에 관한 더 많은 얘기들은 다음 글에서 작성하겠습니다.
감사합니다.

참고한 영상 https://www.youtube.com/watch?v=OTmQOjsl0eg

profile
웹 풀스택 개발자를 준비하고 있습니다. MERN스택을 수상하리만큼 사랑합니다.

0개의 댓글