Фото Джеймса Гаррісона на Unsplash
Django Rest Framework (DRF) — потужний інструмент для створення надійних API за допомогою фреймворку Django. У цьому посібнику ми покроково розглянемо, як налаштувати API на Django з використанням DRF. Цей посібник припускає, що у вас встановлений Python і ви знайомі з базовими командами Python.
Попередні вимоги
Перед початком переконайтеся, що:
- У вас встановлений Python версії 3.8 або вище.
- У вас встановлений
pip
(менеджер пакетів Python).
Крок 1: Встановлення необхідних пакетів
Для початку вам потрібно встановити Django та DRF. Виконайте наступні команди в терміналі:
pip install django djangorestframework
Перевірте встановлення:
django-admin --version
Крок 2: Створення нового проекту Django
Тепер давайте створимо новий проект. Замініть myproject
на бажану назву вашого проекту.
django-admin startproject myproject
cd myproject
Крок 3: Створення додатку Django
Django організовує проекти в додатки. Створимо додаток для нашого API. Замініть api
на бажану назву вашого додатку:
python manage.py startapp api
Крок 4: Додавання додатку та DRF у settings.py
Відкрийте файл settings.py
у вашій папці проекту та оновіть список INSTALLED_APPS
, додавши ваш додаток та DRF:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', # Додати Django Rest Framework
'api', # Додати ваш додаток
]
Крок 5: Створення простого API-ендпоїнта
Створення моделі Item
У файлі api/models.py
визначте просту модель. Наприклад:
from django.db import models
class Item(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
Створіть міграцію, це згенерує код, необхідний для створення нової таблиці в базі даних для моделі Item:
python manage.py makemigrations
Запустіть команду міграції, щоб виконати операції з базою даних (якщо ви виконуєте цю команду вперше, вона також застосує стандартні міграції Django для створення таблиць User тощо):
python manage.py migrate
Створення серіалізатора
Серіалізатор у Django Rest Framework (DRF) — це компонент, який займається серіалізацією та десеріалізацією. Він перетворює вашу модель бази даних у формат JSON (серіалізація) або приймає JSON-дані як вхід, перевіряє їх і перетворює на екземпляр моделі Django (десеріалізація).
Створіть файл api/serializers.py
зі серіалізатором для моделі Item
:
from rest_framework import serializers
from .models import Item
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = '__all__'
Створення виду
Види в Django відповідають за обробку логіки ендпоїнтів, вони приймають запит, виконують певні операції, наприклад...
load model from database, serialize it into JSON format and return the HTTP Response.
У файлі api/views.py
додайте вид, використовуючи APIView
від DRF:
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Item
from .serializers import ItemSerializer
class ItemsView(APIView):
def get(self, request):
items = Item.objects.all()
serializer = ItemSerializer(items, many=True)
return Response(serializer.data)
def post(self, request):
serializer = ItemSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=201)
return Response(serializer.errors, status=400)
Налаштування URL
Створіть файл urls.py
у каталозі api
та визначте маршрут для API:
from django.urls import path
from .views import ItemsView
urlpatterns = [
path('items/', ItemsView.as_view(), name='items'),
]
Потім додайте URL додатку в головний urls.py
:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls')), # Додати цей рядок
]
Крок 6: Увімкнення UI браузера для DRF
Django Rest Framework надає зручний інтерфейс браузера для API "з коробки". Коли ви використовуєте APIView
або інші види DRF, інтерфейс для браузера автоматично активується у вашому середовищі розробки.
Щоб переконатися, що ця функція доступна, перевірте, чи містить налаштування REST_FRAMEWORK
у файлі settings.py
:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
}
Це дозволить вам:
- Тестувати ваше API інтерактивно, використовуючи веб-браузер.
- Переглядати відповіді як у форматі JSON, так і в зрозумілому для людини вигляді.
Крок 7: Тестування API
Запустіть сервер розробки:
python manage.py runserver
Доступ до UI браузера для API
Перейдіть за посиланням http://127.0.0.1:8000/api/items/
у вашому браузері, щоб переглянути UI для браузера, наданий DRF.
- POST: Використовуйте форму в UI для створення нових об’єктів
Item
, заповнивши поля.
Введіть цей код у поле content
і натисніть POST
{
"name": "My item",
"description": "This is a test item"
}
Відповідь на POST — Новий елемент було створено
- GET: UI відобразить усі існуючі об’єкти
Item
.
Резюме
Вітаємо! Ви налаштували просте Django API за допомогою Django Rest Framework з використанням стандартного інтерфейсу браузера для API.
Для отримання додаткової інформації ознайомтеся з документацією Django Rest Framework.
Перекладено з: Setting Up a Django API with Django REST Framework (DRF): A Beginner’s Guide