Django & Swagger

정윤수·2022년 8월 11일
0

0807

Django Swagger

  • 오늘은 스웨거에 대해서 알아보았따~~

패키지 설치

pip install django djangorestframework
pip install drf_yasg

# settings.py
INSTALLED_APPS = [
	 'djangorestframework',
   'drf_yasg',
]

urls 변경

urls.py

  • schema_url_patterns, schema_view_v1 설정
  • urlpatterns 에 re_path 추가 (django +3.0 부터는 url이 deprecated가 되어서 re_path를 import 해서 사용해준당)

from django.contrib import admin
from django.urls import include, path, re_path

# swagger 설정

from rest_framework.permissions import AllowAny
from drf_yasg.views import get_schema_view 
from drf_yasg import openapi

schema_url_patterns = [ 
    path('order/', include('order.urls')),
    ]

schema_view_v1 = get_schema_view(
    openapi.Info(
        title="Open API",
        default_version='v1',
        description="swagger using",
        terms_of_service="https://www.google.com/policies/terms/",
    ),
    public=True,
    permission_classes=(AllowAny,),
    patterns=schema_url_patterns,
)

urlpatterns = [
    path('order/', include('order.urls')),
    path('admin/', admin.site.urls),
    # path('',include('blog.urls')),
    re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view_v1.without_ui(cache_timeout=0), name='schema-json'),
    re_path(r'^swagger/$', schema_view_v1.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    re_path(r'^redoc/$', schema_view_v1.with_ui('redoc', cache_timeout=0), name='schema-redoc'),

]

Views 변경

order/views.py

  • 각 HTTP 요청에 맞게 @swagger_auto_schema 설정해준다.

from drf_yasg.utils import swagger_auto_schema

@swagger_auto_schema(method='GET')
@api_view(['GET'])
def order_list(request):
	...

@swagger_auto_schema(method='POST', request_body=OrderSerializer)
@api_view(['POST'])
def order_create(request):
	...

결과

참고 자료

profile
https://www.youtube.com/watch?v=whoDs0KRc7k&t=1s

0개의 댓글

관련 채용 정보