Django DRF

Ryu Honggyu·2024년 8월 30일

Django

목록 보기
16/19
post-thumbnail

DRF (Django Rest Framework)

정의

  • Django 기반 애플리케이션에서 RESTful API를 쉽게 구축, 관리할 수 있도록 해주는 라이브러리.
  • 시리얼라이저로 API 개발을 간소화하고 유지보수성을 높일 수 있음.

주요 기능

기능설명
APIViewRESTful API의 GET, POST, PUT, DELETE 메소드를 구현할 수 있는 Django 뷰.
ViewSet여러 개의 API 동작을 하나의 클래스에 모아둔 구조로, 코드 재사용성이 높음.
SerializerDjango 모델 데이터를 JSON, XML 등으로 변환하고, 역직렬화도 지원.
PermissionAPI 접근 권한을 관리하며, 사용자 인증 및 권한을 설정할 수 있음.

시리얼라이저

  • Django 모델 데이터를 JSON 으로 변환함.
  • API 에서 안전하고 일관된 데이터 처리가 가능해짐.

Seeding

  • DB 에 초기 데이터나 테스트 데이터를 삽입하는 작업.
  • 아래 예제에선 django-seed 라이브러리를 사용해 테스트 데이터를 삽입할 것.

과정

  1. 터미널에 다음 입력.
    pip install django-seed

  2. INSTALLED_APPSdjango_seed를 추가.

    # settings.py
    INSTALLED_APPS = [
        # other apps...
        'django_seed',
    ]
    
  3. 아래의 명령어를 사용해 articles 테이블에 n개의 더미 데이터 생성.
    python manage.py seed articles --number=n


DRF 코드 예제

urls.py

  • urlpatterns 에 json-drf 추가.
from django.urls import path
from . import views

app_name = "articles"
urlpatterns = [
    path("html/", views.article_list_html, name="article_list_html"),
    path("json-drf/", views.json_drf, name="json_drf"),
]

serializers.py

  • 시리얼라이저. Article 모델 데이터를 JSON 으로 변환해줌.
from rest_framework import serializers
from .models import Article

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = "__all__"

views.py

  • json_drf 뷰에서 Article 모델의 모든 데이터를 JSON으로 반환함.
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import ArticleSerializer

@api_view(["GET"])
def json_drf(request):
    articles = Article.objects.all()
    serializer = ArticleSerializer(articles, many=True)
    return Response(serializer.data)

my_program.py

  • API 요청을 보내는 클라이언트 코드.
  • DRF로 구축된 API에 GET 요청을 보내고 응답을 출력.
import requests

url = "http://127.0.0.1:8000/api/v1/articles/json-drf"
response = requests.get(url)

print(response)
print(response.json())

서버 실행 및 페이지 접속

  • Django 개발 서버를 실행: python manage.py runserver
  • 서버 실행 후 웹 브라우저에서 http://127.0.0.1:8000/json-drf/ 를 입력해 DRF 로 구현한 API 페이지에 접근.
  • seeding 으로 채운 더미 데이터 20개가 표시될 것.
profile
알고리즘 & 웹 & CS & AI

0개의 댓글