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