API
Overview
SpeedPy comes with Django REST Framework (DRF) and drf-spectacular pre-installed and ready to use. No API endpoints are defined by default — this gives you a clean starting point.
Installed Packages
From requirements.txt:
djangorestframework==3.16.1
drf-spectacular==0.29.0
Getting Started
Create a Serializer
# mainapp/serializers.py
from rest_framework import serializers
from mainapp.models import Team
class TeamSerializer(serializers.ModelSerializer):
class Meta:
model = Team
fields = ['id', 'name', 'slug', 'plan', 'created_at']
Create a ViewSet
# mainapp/api_views.py
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from mainapp.models import Team
from mainapp.serializers import TeamSerializer
class TeamViewSet(viewsets.ModelViewSet):
serializer_class = TeamSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Team.objects.filter(
teammembership__user=self.request.user
)
Register URLs
# project/urls.py or mainapp/urls.py
from rest_framework.routers import DefaultRouter
from mainapp.api_views import TeamViewSet
router = DefaultRouter()
router.register('teams', TeamViewSet, basename='team')
urlpatterns += [
path('api/', include(router.urls)),
]
API Schema with drf-spectacular
drf-spectacular generates OpenAPI 3.0 schemas for your API. Add the schema views:
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
urlpatterns += [
path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
]
Then visit /api/docs/ for interactive Swagger documentation.