Django REST Framework
Django REST Framework (DRF) - самый популярный пакет для создания REST API в Django.
Установка
1# Установка пакета
2pip install djangorestframework
1# Или через Poetry
2poetry add djangorestframework
Базовая настройка
1# settings.py
2INSTALLED_APPS = [
3 'rest_framework',
4]
5
6REST_FRAMEWORK = {
7 'DEFAULT_PERMISSION_CLASSES': [
8 'rest_framework.permissions.IsAuthenticated',
9 ],
10 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
11 'PAGE_SIZE': 20
12}
Создание API
1# serializers.py
2from rest_framework import serializers
3from .models import Book
4
5class BookSerializer(serializers.ModelSerializer):
6 class Meta:
7 model = Book
8 fields = ['id', 'title', 'author', 'published_date']
1# views.py
2from rest_framework import viewsets
3from .serializers import BookSerializer
4
5class BookViewSet(viewsets.ModelViewSet):
6 queryset = Book.objects.all()
7 serializer_class = BookSerializer
Настройка URL
1# urls.py
2from rest_framework.routers import DefaultRouter
3from .views import BookViewSet
4
5router = DefaultRouter()
6router.register(r'books', BookViewSet)
7
8urlpatterns = [
9 path('api/', include(router.urls)),
10]
Фильтрация и поиск
1# views.py
2from django_filters.rest_framework import DjangoFilterBackend
3from rest_framework.filters import SearchFilter, OrderingFilter
4
5class BookViewSet(viewsets.ModelViewSet):
6 queryset = Book.objects.all()
7 serializer_class = BookSerializer
8 filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
9 filterset_fields = ['author', 'category']
10 search_fields = ['title', 'description']
11 ordering_fields = ['title', 'published_date']
FAQ
Q: Как добавить фильтрацию?
A: Используй django-filter с DjangoFilterBackend.
Q: Как настроить пагинацию?
A: Настрой PAGE_SIZE в REST_FRAMEWORK или создай кастомный пагинатор.