@@ -47,6 +47,7 @@ class ProjectDefault(Configuration):
4747 "django.contrib.sessions" ,
4848 "django.contrib.messages" ,
4949 "django.contrib.staticfiles" ,
50+ "drf_spectacular" ,
5051 ]
5152
5253 MIDDLEWARE = [
@@ -181,6 +182,51 @@ class ProjectDefault(Configuration):
181182
182183 SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO" , "https" )
183184
185+ # API Documentation
186+
187+ ENABLE_API_DOCS = values .BooleanValue (False )
188+
189+ # Django REST Framework
190+ # https://www.django-rest-framework.org/api-guide/settings/
191+
192+ REST_FRAMEWORK : dict = {
193+ "DEFAULT_AUTHENTICATION_CLASSES" : [
194+ "rest_framework.authentication.SessionAuthentication" ,
195+ ],
196+ "DEFAULT_FILTER_BACKENDS" : [
197+ "django_filters.rest_framework.DjangoFilterBackend"
198+ ],
199+ "DEFAULT_PARSER_CLASSES" : [
200+ "djangorestframework_camel_case.parser.CamelCaseMultiPartParser" ,
201+ "djangorestframework_camel_case.parser.CamelCaseJSONParser" ,
202+ ],
203+ "DEFAULT_PERMISSION_CLASSES" : ["rest_framework.permissions.IsAuthenticated" ],
204+ "DEFAULT_RENDERER_CLASSES" : [
205+ "djangorestframework_camel_case.render.CamelCaseJSONRenderer" ,
206+ ],
207+ "DEFAULT_SCHEMA_CLASS" : "drf_spectacular.openapi.AutoSchema" ,
208+ }
209+
210+ # drf-spectacular
211+ # https://drf-spectacular.readthedocs.io/en/latest/
212+
213+ SPECTACULAR_SETTINGS = {
214+ "TITLE" : "{{ cookiecutter.project_name }} - API documentation" ,
215+ "DESCRIPTION" : "{{ cookiecutter.project_description }}" ,
216+ "VERSION" : "1.0.0" ,
217+ "CAMELIZE_NAMES" : True ,
218+ "SWAGGER_UI_SETTINGS" : {
219+ "deepLinking" : True ,
220+ "displayRequestDuration" : True ,
221+ "persistAuthorization" : True ,
222+ "syntaxHighlight.activate" : True ,
223+ },
224+ "POSTPROCESSING_HOOKS" : [
225+ "drf_spectacular.hooks.postprocess_schema_enums" ,
226+ "drf_spectacular.contrib.djangorestframework_camel_case.camelize_serializer_fields" , # noqa
227+ ],
228+ }
229+
184230
185231class Local (ProjectDefault ):
186232 """The local settings."""
@@ -251,6 +297,18 @@ class Local(ProjectDefault):
251297 "verbose_names" : True ,
252298 }
253299
300+ # Django REST Framework
301+ # https://www.django-rest-framework.org/api-guide/settings/
302+
303+ REST_FRAMEWORK = {
304+ ** ProjectDefault .REST_FRAMEWORK ,
305+ "DEFAULT_RENDERER_CLASSES" : [
306+ * ProjectDefault .REST_FRAMEWORK ["DEFAULT_RENDERER_CLASSES" ],
307+ "djangorestframework_camel_case.render.CamelCaseBrowsableAPIRenderer" ,
308+ ],
309+ }
310+
311+
254312
255313class Testing (ProjectDefault ):
256314 """The testing settings."""
0 commit comments