python기반 웹 프레임워크는 대표적으로 flask와 django가 있습니다.
django는 full-stack 웹 프레임워크로 제공하는 기능이 많아 웬만한 기능은 django가 미리 만들어 놓은 기능을 따라야합니다.
편리하기도 하지만 다소 독선적인 프레임워크로 알려져있습니다.
django 공식문서를 기반으로 적용 방법 등을 알아보겠습니다.
각 python및 django 시리즈의 최신 패치 및 릴리스만 공식적으로 지원합니다.
pip install Django
django-admin startproject djangoProject
1-1. pip를 통한 설치
pip install djangorestframework
pip install markdown # Markdown support for the browable API
pip install django-filter # Filtering support
1-2. github 프로젝트 clone
git clone https://github.com/encode/django-rest-framework
INSTALLED_APPS = [
...
'rest_framework',
]
여기까지가 설치 및 적용입니다.
실습 예시까지 해보겠습니다.
간단한 모델-백엔드 API를 구성하겠습ㄴ디ㅏ.
프로젝트 데이터에 접근하기 위한 읽고 쓰기 API를 만들 것입니다.
모든 REST framework API를 위한 세팅은 REST_FRAMEWORK로 명명된 하나의 딕셔너리형태로setting.py에 작성합니다.
REST_FRAMEWORK = {
# Django's 표준 'django.contrib.auth' 권한을 사용하거나,
# 인증되지 않은 사용자에 대해 읽기 전용 액세스를 허용합니다.
'DEFAULT_PERMISSION_CALSSES': [
'rest_framework.permission.DjangoModelPermissionOrAnonReadOnly'
]
}
이제 API를 만들 준비가 되었습니다.
urls.py에서 작성합니다.
from django.urls import paht, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
# serializer는 API representation을 정의합니다.
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ['url', 'username', 'email', 'is_staff']
# ViewSets 은 view동작을 정의합니다.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
# Routers 는 자동으로 URL을 정의해주는 쉬운 방법을 만들어 줍니다.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
# 자동 URL routing 사용해서 API를 연결합니다.
# 검색 가능한 API에 대한 로그인 URL도 포함되어 있습니다.
urlpatters = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
이제 서버를 실행시키면 http://127.0.0.1:8000/의 브라우저에서 API를 열고 새로운 'User'API를 볼 수 있습니다.
django-rest-framework 공식문서: https://www.django-rest-framework.org/