Django에서 지원하는 DRF(Django Rest Framework) 간단하게 Setting 하기
기본적으로 Swagger연동을 위해서는 Django가 설치되어 있어야 한다.
또한 App, Project 생성되어있어야 한다.
준비가 안되어 있으면 이전 포스팅 참고: Python, Django, Anaconda Setting, PyCharm Project
■ Swagger(DRF) 세팅 방법 및 결과 확인
1. DRF(Django Rest Framework) 설치 : pip install djangorestframework
2. Drf-Yasg 설치 : pip install drg-yasg
3. settings.py에 설치된 install 한 app추가
INSTALLED_APPS = [
........,
'drf_yasg',
'rest_framework'
]
4. 복사, 붙여 넣기 수준으로 urls.py에 아래 소스 추가
from rest_framework.permissions import AllowAny
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from django.urls import re_path
# [5. 실행화면]과 비교하면 쉽게 이해 가능(모두 수정가능)
schema_view = get_schema_view(
openapi.Info(
title="Snippets API",
default_version='v1',
description="Test description",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="contact@snippets.local"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=[AllowAny]
# [참고]
# AllowAny(기본값) : 인증에 관계없이 모두 허용
# IsAuthenticated : 인증된 요청만 허용
# IsAdminUser : Staff인증 요청만 허용
# IsAuthenticatedOrReadOnly : 인증이 안되어 있으면 읽기 권한만 허용
# DjangoModelPermissons : 인증된 요청만 허용 + 장고 모델단위 권한 체크
# DjangoModelPermissionsOrAnonReadOnly : DjangoModelPermissons 유사, 인증이 안되어 있으면 읽기 권한만 허용
# DjangoObjectPermissons : 인증이 안되어 있으면 거부, 인증이 되어있으면 Object에 대한 권한 체크를 수행
)
# 기존에 있는 urlpatterns
if settings.DEBUG:
urlpatterns += [
re_path(r'^swagger(?P\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name="schema-json"),
re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc')
]
5. 실행화면
- http://127.0.0.1:8000/swagger/
공식문서 : https://drf-yasg.readthedocs.io/en/stable/readme.html
'Django' 카테고리의 다른 글
Django Swagger DRF - FBV, @api_view 활용 (0) | 2023.05.08 |
---|---|
PyCharm Project 생성, Path 경로 수정 (0) | 2023.05.07 |
Django App Error(ModuleNotFoundError: No module named) (0) | 2023.05.01 |
Python, Django, Anaconda를 사용하여 프로젝트 만들기 (0) | 2023.04.30 |
Django 설명, 장점, 단점, 선택한 이유 (0) | 2023.04.29 |