Implementing GraphQL in Django and the Graphene library.

Djangoda GraphQL ni qo‘llanilishi va Graphene kutubxonasi
Jahongir Hakimjonov • June 25, 2024
GraphQL — bu API (Application Programming Interface) uchun so‘rovlar tili bo‘lib, foydalanuvchilarga kerakli ma’lumotlarni aniq so‘rab olish imkonini beradi. Django’da GraphQL qo‘llanilishi Graphene-Django kutubxonasidan foydalanish orqali amalga oshiriladi. Keling, GraphQL va Django’da GraphQL qanday qo‘llanilishini bosqichma-bosqich ko‘rib chiqaylik.
GraphQL haqida qisqacha
GraphQL Facebook tomonidan ishlab chiqilgan va ochiq manba (open-source) bo‘lgan. REST API-lardan farqli o‘laroq, foydalanuvchilarga kerakli ma’lumotlarni aniq so‘rab olish imkonini beradi. REST’da bir nechta so‘rov orqali olinadigan ma’lumotlarni GraphQL yordamida bir so‘rov orqali olish mumkin.
Django’da GraphQL qo‘llanilishi
Django’da GraphQL ishlatish uchun Graphene-Django kutubxonasidan foydalaniladi. Quyida Graphene-Django yordamida oddiy GraphQL API yaratish bosqichlari:
-
Django loyihasini yaratish va unga Graphene-Django-ni o‘rnatish
bash1pip install graphene-django

-
Django ilovasini yaratish
bash1python manage.py startapp myapp

-
Ilovani sozlash —
settings.pyfayliga kerakli konfiguratsiyalarni qo‘shishpython1INSTALLED_APPS = [ 2 ... 3 "graphene_django", 4 "myapp", 5] 6 7GRAPHENE = { 8 "SCHEMA": "myapp.schema.schema" 9}

-
Model yaratish (
myapp/models.py)python1from django.db import models 2 3class Author(models.Model): 4 name = models.CharField(max_length=100) 5 age = models.IntegerField()
-
Schema va Query yaratish (
myapp/schema.py)python1import graphene 2from graphene_django import DjangoObjectType 3from .models import Author 4 5class AuthorType(DjangoObjectType): 6 class Meta: 7 model = Author 8 fields = ("id", "name", "age") 9 10class Query(graphene.ObjectType): 11 all_authors = graphene.List(AuthorType) 12 13 def resolve_all_authors(root, info): 14 return Author.objects.all() 15 16schema = graphene.Schema(query=Query)

-
URL-larni sozlash (
myproject/urls.py)python1from django.contrib import admin 2from django.urls import path 3from graphene_django.views import GraphQLView 4 5urlpatterns = [ 6 path("admin/", admin.site.urls), 7 path("graphql/", GraphQLView.as_view(graphiql=True)), 8]

-
Ma’lumotlar bazasini migratsiya qilish
bash1python manage.py makemigrations 2python manage.py migrate

-
GraphQL endpoint-ni test qilish — serverni ishga tushirib, brauzerda:
👉
http://127.0.0.1:8000/graphql/Bu yerda GraphiQL interfeysi orqali so‘rov yuborishingiz mumkin:
graphql1{ 2 allAuthors { 3 id 4 name 5 age 6 } 7}

Xulosa
- GraphQL — foydalanuvchiga aniq ma’lumotlarni olish imkonini beradi.
- Graphene-Django — Django’da GraphQL qo‘llash uchun qulay kutubxona.
- Bu yondashuv orqali API’lar yanada moslashuvchan va samarali bo‘ladi.