Django Rest Framework (DRF) – мощный и гибкий инструмент для создания RESTful API на Django. Это руководство предназначено для разработчиков, желающих быстро освоить основы DRF и создать свой первый API. Мы рассмотрим все ключевые этапы: от установки и настройки до тестирования и расширения функциональности. Цель — предоставить пошаговое руководство с примерами кода, чтобы вы могли немедленно приступить к разработке.
Настройка Django и Django Rest Framework
Установка Python, Django и DRF
Убедитесь, что у вас установлен Python. Рекомендуется использовать виртуальное окружение.
-
Создайте виртуальное окружение:
python -m venv venv source venv/bin/activate # или venv\Scripts\activate в Windows -
Установите Django и DRF:
pip install django djangorestframework
Создание нового Django-проекта и приложения
-
Создайте Django-проект:
django-admin startproject myproject cd myproject -
Создайте Django-приложение:
python manage.py startapp myapp -
Добавьте
rest_frameworkи ваше приложение (myapp) вINSTALLED_APPSвmyproject/settings.py:INSTALLED_APPS = [ ... 'rest_framework', 'myapp', ]
Определение Моделей и Сериализаторов
Создание Django-модели (например, Task)
Определите модель данных в myapp/models.py. Например, модель Task:
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=200)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
Выполните миграции:
python manage.py makemigrations
python manage.py migrate
Разработка сериализатора для преобразования данных модели в JSON
Создайте файл myapp/serializers.py и определите сериализатор для модели Task:
from rest_framework import serializers
from .models import Task
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ('id', 'title', 'completed')
Создание API Views с Использованием ViewSets
Использование ModelViewSet для базовых операций CRUD
ViewSet предоставляет стандартный набор операций CRUD (Create, Read, Update, Delete) для вашей модели.
Создайте файл myapp/views.py и определите TaskViewSet:
from rest_framework import viewsets
from .models import Task
from .serializers import TaskSerializer
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all()
serializer_class = TaskSerializer
Настройка URL-маршрутизации с помощью SimpleRouter
В файле myapp/urls.py настройте URL-маршрутизацию для TaskViewSet:
from rest_framework import routers
from .views import TaskViewSet
from django.urls import path, include
router = routers.SimpleRouter()
router.register(r'tasks', TaskViewSet)
urlpatterns = [
path('', include(router.urls)),
]
Не забудьте включить myapp.urls в основной urls.py файл вашего проекта (myproject/urls.py):
from django.urls import include, path
urlpatterns = [
path('api/', include('myapp.urls')),
]
Тестирование и Дальнейшее Развитие API
Тестирование API с помощью Postman или curl
Запустите Django-сервер:
python manage.py runserver
Используйте Postman или curl для тестирования API-эндпоинтов (например, http://127.0.0.1:8000/api/tasks/).
-
GET /api/tasks/— получение списка задач. -
POST /api/tasks/— создание новой задачи. -
GET /api/tasks/{id}/— получение конкретной задачи. -
PUT /api/tasks/{id}/— обновление задачи. -
DELETE /api/tasks/{id}/— удаление задачи.
Добавление аутентификации и разрешений к API
Для защиты API добавьте аутентификацию и разрешения. DRF предоставляет различные варианты аутентификации, такие как Token Authentication, Session Authentication и JWT (JSON Web Tokens). Например, для использования Token Authentication:
-
Добавьте
'rest_framework.authtoken'вINSTALLED_APPS. -
Выполните миграции:
python manage.py migrate -
Добавьте
authentication_classesиpermission_classesвTaskViewSet:from rest_framework import viewsets, permissions from rest_framework.authentication import TokenAuthentication from .models import Task from .serializers import TaskSerializer class TaskViewSet(viewsets.ModelViewSet): queryset = Task.objects.all() serializer_class = TaskSerializer authentication_classes = [TokenAuthentication] permission_classes = [permissions.IsAuthenticated] -
Сгенерируйте токены для пользователей через Django admin или программно.
Заключение
В этом руководстве мы рассмотрели основные шаги для создания простого API на Django Rest Framework. Вы узнали, как установить необходимые пакеты, создать Django-проект и приложение, определить модели и сериализаторы, настроить ViewSets и URL-маршрутизацию, а также протестировать API и добавить аутентификацию. DRF предлагает множество возможностей для расширения функциональности API, включая валидацию данных, обработку ошибок, пагинацию и многое другое. Продолжайте изучать документацию DRF и экспериментировать с различными функциями, чтобы создавать более сложные и мощные API. 🚀