Django — це потужний веб-фреймворк Python, відомий своєю простотою та надійністю, а GraphQL — це сучасна мова запитів, яка надає гнучкість при розробці API. Поєднання цих двох технологій дає вашому проєкту найкраще з обох світів — чисту архітектуру та ефективне запитування даних. У цьому пості ми пройдемо через налаштування GraphQL у Django проєкті, використовуючи Graphene-Django, популярну бібліотеку для інтеграції GraphQL з Django.
Що ми покриємо:
-
Налаштування Django проєкту.
-
Встановлення та конфігурація GraphQL з Graphene-Django.
-
Створення простого схеми GraphQL.
-
Тестування вашого GraphQL API.
Попередні вимоги
Перед тим як почати, переконайтеся, що у вас є:
• Python 3.7 або вище.
• Встановлений Django (pip install django).
• Базові знання Django та GraphQL.
Крок 1: Створення Django проєкту
Почнімо з створення нового Django проєкту та додатку:
django-admin startproject graphql_demo
cd graphql_demo
python manage.py startapp api
Не забудьте додати додаток api до INSTALLEDAPPS у **settings.py_**:
INSTALLED_APPS = [
…
'api',
'graphene_django',
]
Крок 2: Встановлення Graphene-Django
Встановіть бібліотеку graphene-django:
pip install graphene-django
Ця бібліотека надає інструменти для визначення GraphQL схеми та зв'язування її з моделями Django.
Крок 3: Налаштування GraphQL у Django
У вашому settings.py, додайте конфігурацію GraphQL:
GRAPHENE = {
"SCHEMA": "api.schema.schema", # Шлях до вашої схеми
}
І додайте маршрут для GraphQL API в urls.py:
from django.contrib import admin
from django.urls import path
from graphene_django.views import GraphQLView
urlpatterns = [
path('admin/', admin.site.urls),
path('graphql/', GraphQLView.as_view(graphiql=True)), # Увімкнення інтерфейсу GraphiQL
]
Крок 4: Створення GraphQL схеми
Тепер давайте визначимо просту схему. Припустимо, ви хочете відкрити модель Book з назвою та автором.
Створення моделі
У api/models.py, визначте модель Book:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
def __str__(self):
return self.title
Запустіть міграції для створення таблиці:
python manage.py makemigrations
python manage.py migrate
Створення схеми
У api/schema.py, визначте GraphQL схему для моделі Book:
import graphene
from graphene_django.types import DjangoObjectType
from .models import Book
class BookType(DjangoObjectType):
class Meta:
model = Book
class Query(graphene.ObjectType):
all_books = graphene.List(BookType)
def resolve_all_books(root, info):
return Book.objects.all()
schema = graphene.Schema(query=Query)
Крок 5: Заповнення бази даних
Щоб протестувати GraphQL API, додайте деякі дані в базу даних. Використовуйте Django адмінку або оболонку:
python manage.py shell
from api.models import Book
Book.objects.create(title="The Great Gatsby", author="F. Scott Fitzgerald")
Book.objects.create(title="1984", author="George Orwell")
Крок 6: Тестування вашого GraphQL API
Запустіть сервер розробки:
python manage.py runserver
Перейдіть за адресою http://127.0.0.1:8000/graphql/.. Ви побачите інтерфейс GraphiQL, де можна писати та тестувати запити.
Спробуйте цей запит для отримання всіх книг:
query {
allBooks {
title
author
}
}
Ви повинні побачити відповідь, схожу на цю:
{
"data": {
"allBooks": [
{
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald"
},
{
"title": "1984",
"author": "George Orwell"
}
]
}
}
Висновок
Ви успішно налаштували Django проєкт з GraphQL! Ця базова налаштування може бути розширена для включення мутацій, аутентифікації та більш складних функцій.
Поєднуючи потужні можливості бекенду Django з гнучкістю GraphQL, ви можете створювати API, які будуть як потужними, так і зручними для користувачів.
Якщо у вас є питання або ви хочете дізнатися більше про Django та GraphQL, пишіть в коментарях. Удачі в кодингу! 🚀
Перекладено з: Setting Up Django with GraphQL: A Step-by-Step Guide