지난 글에서는 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
'Framework > Django' 카테고리의 다른 글
| [Django] Model Query (0) | 2025.12.13 |
|---|---|
| [Django] Model 정의와 Migration (0) | 2025.12.09 |
| [Django] Django 설치 와 project 생성 (0) | 2025.12.06 |
| [Django] Django Model Field - FileField 사용예제 (2) (1) | 2025.08.10 |
| [Django] Django Model Field - FileField (1) (2) | 2025.08.08 |