오늘의 TIL (Today I Learned)

 Django 구현 흐름

Django를 활용하여 웹 애플리케이션을 구축하는 기본적인 흐름을 정리했다.

1️⃣ 가상환경 및 Django 프로젝트 생성

python -m venv venv  # 가상환경 생성
source venv/bin/activate  # 가상환경 활성화 (Windows: venv\Scripts\activate)
pip install django  # Django 설치
django-admin startproject project  # Django 프로젝트 생성

2️⃣ Django 앱 생성 (startapp post)

python manage.py startapp post  # 'post' 앱 생성

3️⃣ Django 프로젝트에 앱 등록

  • settings.py 파일에서 INSTALLED_APPS에 post와 rest_framework 추가
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        ...
        'rest_framework',
        'post',
    ]
    

4️⃣ 데이터 모델 정의 및 마이그레이션

  • post/models.py에서 DB 모델 생성
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
  • 마이그레이션 실행
python manage.py makemigrations post
python manage.py migrate

5️⃣ URL 설정 (project/urls.py → post/urls.py)

  • project/urls.py
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('post/', include('post.urls')),  # post 앱의 URL을 포함
    ]
    
  • post/urls.py
    from django.urls import path
    from .views import PostList
    
    urlpatterns = [
        path('list/', PostList.as_view()),  # PostList 뷰 연결
    ]
    

6️⃣ JSON 직렬화 (serializers.py)

  • post/serializers.py
    from rest_framework import serializers
    from .models import Post
    
    class PostSerializer(serializers.ModelSerializer):
        class Meta:
            model = Post
            fields = '__all__'
    

7️⃣ CRUD API 뷰 구현 (views.py)

  • post/views.py
    from rest_framework import generics
    from .models import Post
    from .serializers import PostSerializer
    
    class PostList(generics.ListCreateAPIView):
        queryset = Post.objects.all()
        serializer_class = PostSerializer
    
  • ListCreateAPIView를 사용하여 GET(조회) 및 POST(생성) 기능 제공.

8️⃣ 서버 실행 및 API 테스트

python manage.py runserver
  • Postman을 활용하여 http://127.0.0.1:8000/post/list/로 API 테스트 진행.

 Django 요청 흐름 (사용자 관점)

💡 GET /posts/ 요청이 들어왔을 때, Django의 내부 흐름을 정리했다.

1️⃣ 사용자 요청 발생 (GET /posts/)

  • 사용자가 http://127.0.0.1:8000/post/list/ 요청을 보냄.

2️⃣ Django가 urls.py에서 매핑 확인

  • project/urls.py → post/urls.py
  • post/urls.py에서 views.PostList로 연결됨.

3️⃣ views.py에서 요청 처리

  • PostList 클래스에서 Post.objects.all()을 통해 DB에서 데이터 조회.

4️⃣ serializers.py를 통해 JSON 변환

  • 데이터가 JSON 형식으로 변환되어 반환됨.

5️⃣ 최종 Response 반환

  • JSON 데이터를 클라이언트(브라우저 또는 Postman)로 응답.

오늘의 배운 점 & 느낀 점

 Django 프로젝트의 기본적인 구조와 흐름을 다시 한 번 정리했다.
 urls.py → views.py → models.py → serializers.py → Response의 순서로 진행됨을 이해했다.
 RESTful API를 만들기 위해 ListCreateAPIView를 사용하여 GET & POST 요청을 쉽게 처리할 수 있음을 알게 되었다.
 Postman을 활용한 API 테스트 과정이 중요하며, 실제 서버와의 연동을 통해 제대로 동작하는지 확인하는 것이 필요함을 깨달았다.

 

+ Recent posts