diff --git a/requirements.txt b/requirements.txt index 859837ef..4a6a87f9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,8 +3,11 @@ Django==4.2.8 django-debug-toolbar==4.2.0 django-environ==0.11.2 djangorestframework==3.14.0 -psycopg2-binary==2.9.9 -python-environ==0.4.54 +drf-yasg==1.21.7 +inflection==0.5.1 +packaging==23.2 pytz==2023.3.post1 +PyYAML==6.0.1 sqlparse==0.4.4 typing_extensions==4.9.0 +uritemplate==4.1.1 diff --git a/src/settings.py b/src/settings.py index 5e470a2f..64702790 100644 --- a/src/settings.py +++ b/src/settings.py @@ -11,11 +11,11 @@ """ from pathlib import Path -import os import environ +import os # Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) env = environ.Env(DEBUG=(bool, True)) @@ -44,6 +44,8 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'rest_framework', + 'drf_yasg', ] MIDDLEWARE = [ diff --git a/src/urls.py b/src/urls.py index 3a9c4394..bf1e229a 100644 --- a/src/urls.py +++ b/src/urls.py @@ -15,8 +15,36 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import include, path, re_path +from django.conf import settings +from rest_framework import routers, permissions +from drf_yasg.views import get_schema_view +from drf_yasg import openapi + +router = routers.DefaultRouter() + +schema_view = get_schema_view( + openapi.Info( + title="ft_transcendence API", + default_version="v1.0.0", + description="Test description", + terms_of_service="https://www.google.com/policies/terms/", + ), + public=True, + permission_classes=[permissions.AllowAny, ], +) urlpatterns = [ path('admin/', admin.site.urls), ] + +# DEBUG 모드일 경우, ui 없이 swagger view를 사용할 수 있도록 설정 +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'), + ]