Как Создать Простой API на Django Rest Framework: Полное Руководство с Примерами Кода?

Django Rest Framework (DRF) – мощный и гибкий инструмент для создания RESTful API на Django. Это руководство предназначено для разработчиков, желающих быстро освоить основы DRF и создать свой первый API. Мы рассмотрим все ключевые этапы: от установки и настройки до тестирования и расширения функциональности. Цель — предоставить пошаговое руководство с примерами кода, чтобы вы могли немедленно приступить к разработке.

Настройка Django и Django Rest Framework

Установка Python, Django и DRF

Убедитесь, что у вас установлен Python. Рекомендуется использовать виртуальное окружение.

  1. Создайте виртуальное окружение:

    python -m venv venv
    source venv/bin/activate  # или venv\Scripts\activate в Windows
    
  2. Установите Django и DRF:

    pip install django djangorestframework
    

Создание нового Django-проекта и приложения

  1. Создайте Django-проект:

    django-admin startproject myproject
    cd myproject
    
  2. Создайте Django-приложение:

    python manage.py startapp myapp
    
  3. Добавьте 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:

  1. Добавьте 'rest_framework.authtoken' в INSTALLED_APPS.

  2. Выполните миграции:

    python manage.py migrate
    
  3. Добавьте 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]
    
  4. Сгенерируйте токены для пользователей через Django admin или программно.

Заключение

В этом руководстве мы рассмотрели основные шаги для создания простого API на Django Rest Framework. Вы узнали, как установить необходимые пакеты, создать Django-проект и приложение, определить модели и сериализаторы, настроить ViewSets и URL-маршрутизацию, а также протестировать API и добавить аутентификацию. DRF предлагает множество возможностей для расширения функциональности API, включая валидацию данных, обработку ошибок, пагинацию и многое другое. Продолжайте изучать документацию DRF и экспериментировать с различными функциями, чтобы создавать более сложные и мощные API. 🚀


Добавить комментарий