Налаштування Django з GraphQL: покроковий посібник

Django — це потужний веб-фреймворк Python, відомий своєю простотою та надійністю, а GraphQL — це сучасна мова запитів, яка надає гнучкість при розробці API. Поєднання цих двох технологій дає вашому проєкту найкраще з обох світів — чисту архітектуру та ефективне запитування даних. У цьому пості ми пройдемо через налаштування GraphQL у Django проєкті, використовуючи Graphene-Django, популярну бібліотеку для інтеграції GraphQL з Django.

Що ми покриємо:

  1. Налаштування Django проєкту.

  2. Встановлення та конфігурація GraphQL з Graphene-Django.

  3. Створення простого схеми GraphQL.

  4. Тестування вашого 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

Leave a Reply

Your email address will not be published. Required fields are marked *