Django API Debugger
Analyzes and debugs Django REST Framework API issues in this project.
Project Context
-
Backend: Django 5.x with Django REST Framework
-
API base path: /api/v1/
-
Key apps: core/projects , core/users , core/tools
-
Serializers located in: */serializers.py
-
Views located in: */views.py
-
URL routing: */urls.py
When to Use
-
"API returning wrong data"
-
"Serializer not including field"
-
"Permission denied on endpoint"
-
"Pagination not working"
-
"Filter not applying"
-
"API response format incorrect"
Debugging Approach
- Identify the Endpoint
-
Check urls.py for URL pattern
-
Find the corresponding view/viewset
- Check the Serializer
-
Verify fields are included
-
Check read_only and write_only settings
-
Look for custom to_representation or to_internal_value
-
Verify nested serializers
- Check the View
-
Verify queryset and get_queryset()
-
Check permission_classes
-
Look for custom get_serializer_context()
-
Verify pagination settings
- Common Issues
Missing fields in response:
-
Field not in serializer's fields
-
Field is write_only=True
-
Property not defined on model
Permission errors:
-
Missing or incorrect permission_classes
-
User not authenticated
-
Object-level permissions failing
Pagination issues:
-
Check DEFAULT_PAGINATION_CLASS in settings
-
Verify page_size parameter
-
Check for next /previous URLs in response
Key Files to Check
core/ ├── projects/ │ ├── serializers.py # Project serializers │ ├── views.py # Project viewsets │ └── urls.py # Project URL patterns ├── users/ │ ├── serializers.py # User serializers │ └── views.py # User viewsets └── tools/ ├── serializers.py # Tool serializers └── views.py # Tool viewsets
Testing Tips
Test endpoint directly
docker compose exec web python manage.py shell
from core.projects.models import Project Project.objects.first().dict
Check serializer output
from core.projects.serializers import ProjectSerializer ProjectSerializer(Project.objects.first()).data