본문 바로가기

Framework/Django

[Django] Django app 생성

반응형

지난 글에서는 python 가상환경을 구성하고 Django 설치, Django project 생성까지 진행했다. 이번 글에서는 생성된 project Django application 추가하고 간단하게 http api 구현해보겠다.

1. appilcation 생성

django 에는 app 이라는 개념이 있다. app 실제 서비스 로직을 가지는 web application 을 의미하는데, django project django 관련 설정과 여러 app 들로 구성된다. app django 의 특정 컨벤션에 따른 python 패키지로 구성되는데, 아래와 같이 간단한 명령어로 app 을 생성할 수 있다.

 

$ python manage.py startapp hello

 

명령어를 실행하면 hello 라는 디렉토리와 내부 파이썬 코드들이 생성된다. app 의 디렉토리 기본 구조는 아래와 같다.

 

hello
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

2. app api 추가

- api 구현

이번에는 생성된 hello app 에 간단한 api 를 추가해보고 실제로 실행해보겠다.

 

이번에 만들 api '/hello/world' url 로 접근시 'Hello World' 를 반환하는 api 를 구현할 것이다. 먼저 hello/views.py hello_world() 함수를 추가한다. django app 에서 views.py 는 아마 Django MVT 패턴에서 View 를 담당하는 모듈일 것이다. View 는 model 정보를 가공하여 template 을 렌더링하는 것과 같이 request 에 대한 response 를 만드는 service 레이어이다.

 

# hello/views.py
from django.http import HttpResponse


def hello_world(request):
    return HttpResponse("Hello World")

 

request 가 입력되면 "Hello World" response 로 반환하는 함수를 구현했다면, 이를 특정 url 에 매핑해야 한다. 이를 위해서는 url configuration 을 해야하는데, django app 에서는 urls.py 모듈에 url configuration 을 구현한다.

 

이를 위해서 hello app 아래에 urls.py 라는 파일을 생성하고 아래와 같이 url api 함수를 매핑해준다. 여기서 url '/world' 에 매핑되도록 설정했다.

 

# hello/urls.py
from django.urls import path

from . import views

urlpatterns = [
    path("world", views.hello_world, name="world"),
]

 

app 에서 url 설정을 했다면 이제 root project url 설정을 해 줄 차례이다. django project myproject 내부에는 이미 urls.py 가 존재한다. admin 사이트와 관련된 url 설정이 되어있는데, 여기에 hello app url 설정을 추가해준다.

 

# myproject/urls.py
from django.contrib import admin
from django.urls import include, path

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

 

include() 함수는 다른 url configuration 을 참조하는 함수이다. 이 함수를 통해 hello.urls 모듈을 '/hello' url 에 매핑시켰다. 이를 통해 '/hello/world' 라는 url hello.views hello_world() 함수를 매핑하는 설정을 완료했다.

 

이제 manage.py runserver 로 접속한 후 '127.0.0.1:8000/hello/world' url 로 접근하면 아래와 같이 우리가 구현한대로 Hello World 를 반환하는 것을 확인할 수 있다.

 

[References]

- https://docs.djangoproject.com/en/6.0/intro/tutorial01/#creating-the-polls-app

- https://docs.djangoproject.com/en/6.0/intro/tutorial01/#write-your-first-view

반응형