Muhammad Hafid

Blog Belajar Python atau Django

Muhammad Hafid

Tugas kita itu adalah bukan untuk berhasil, tugas kita adalah untuk mencoba, karena di dalam mencoba itulah kita menemukan dan belajar membangun kesempatan untuk berhasil.

Integration GraphQL with Django Framework

Disini saya akan membahas mengenai pemasangan GraphQL di Django Framework. Jika kalian belum memahami apa itu GraphQL, kalian bisa baca di website officialnya disini https://graphql.org/.


Sedangkan Django Framework adalah framework yang dibangun dengan menggunakan bahasa Python. Disini saya menggunakan OS Ubuntu 18 dan Django Versi 1.11 dengan Python Versi 2.7

Pertama kalian aktif didalam environment kalian dan install graphene :
pip install "graphene-django>=2.0"
Setelah di install, sekarang edit file settings.py kalian dan tambahkan seperti dibawah ini :
INSTALLED_APPS = (
    # ...
    'graphene_django',
)

GRAPHENE = {
    'SCHEMA': 'perpus.schema.schema' # Where your Graphene schema lives
}
Lalu buka file urls.py kalian, dan tambahkan seperti dibawah ini :
from django.conf.urls import url
from graphene_django.views import GraphQLView

urlpatterns = [
    # ...
    url(r'^graphql', GraphQLView.as_view(graphiql=True)),
]
Dan sekarang kita akan melakukan editing dan penambahan file di bagian app. Sebagai contoh saya mempunyai aplikasi/app bernama perpus dan modul yang bernama globalmasters dan secara default pasti mempunyai admin.py dan model.py. Ikuti tahapan dibawah ini :
  1. Buat file baru bernama schema.py di dalam folder globalmasters
  2. Buka file bernama model.py dan lihat script model punya saya, (kita hanya bekerja di 1 tabel ya.
class Zipcode (models.Model):
    STATUS_CHOICES = (
        ('Y', 'Enabled'),
        ('N', 'Disabled'),
    )
    kelurahan = models.CharField(verbose_name="Kelurahan", max_length=250, blank=False)
    kecamatan = models.CharField(verbose_name="Kecamatan", max_length=250, blank=False)
    kabupaten = models.CharField(verbose_name="Kabupaten", max_length=250, blank=False)
    provinsi = models.CharField(verbose_name="Provinsi", max_length=250, blank=False)
    kodepos = models.CharField(verbose_name="Kodepos", max_length=6, blank=False)

    def __unicode__(self):
        return self.kodepos
setelah itu buka file schema.py yang sudah kita buat tadi dan isi dengan script dibawah ini :
from globalmasters.models import Zipcode
from graphene import ObjectType, Node, Schema
from graphene_django.fields import DjangoConnectionField
from graphene_django.types import DjangoObjectType


class zipcodeNode(DjangoObjectType):
    class Meta:
        model = Zipcode
        interfaces = (Node, )

class Query(ObjectType):
    zipcode = Node.Field(zipcodeNode)
    all_zipcodes = DjangoConnectionField(zipcodeNode)
schema = Schema(query=Query)
Setelah langkah diatas selesai, kini kalian buat file schema.py lagi didalam folder aplikasi (contoh:perpus) yang didalam foldernya ada settings.py.

File tersebut isi dengan script dibawah ini :
import globalmasters.schema
import graphene
from graphene_django.debug import DjangoDebug

class Query(globalmasters.schema.Query, graphene.ObjectType):
    debug = graphene.Field(DjangoDebug, name='__debug')

schema = graphene.Schema(query=Query)
Sekarang coba kalian running django kalian, dan untuk ke graphql nya kalian tambahkan slash  
localhost:8000/graphql
Jika sudah tampil seperti dibawah ini bearti kalian sudah berhasil memasang engine graphql di django kalian.


Sekarang coba dengan skema query menggunakan node, contoh nya dibawah ini :
query{
  allZipcodes{
    edges{
      node{
        provinsi
        kabupaten
        kecamatan
        kelurahan
        kodepos
      }
    }
  }
}
Pada keterangan diatas disana saya mengquery mengdaaagunakan metode node dimana nama parameternya adalah  allZipcodes dan didalam node nya tuliskan nama nama fieldnya yang hendak kalian tampilkan.

Dibawah ini adalah milik saya yan sudah berhasil jalan graphql nya.

Untuk berkenalan tentang teknil Graphqlnya sendiri akan ada pembahasan lain ya, seperti menampilkan data limit, relasi dll.

Labels: database , Django , python

Thanks for reading Integration GraphQL with Django Framework . Please share...!

0 Comment for "Integration GraphQL with Django Framework"

Back To Top