Skip to main content

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.