Lección 3.3: Instalando y Configurando Django-GraphQL

Vie 12 Jun 2020 | Por: Roylan Suarez

Hola a toda la comunidad de CódigoJS. Continuamos con una nueva lección un poco más avanzada. Vamos a instalar y configurar nuestro proyecto para usar Django-GraphQL.

Django-GraphQL funciona a través de la librería Graphene. Django-Graphene proporciona algunas abstracciones adicionales que facilitan la adición de la funcionalidad GraphQL a un proyecto Django.

Tabla de contenidos


Instalando Django-Graphene

En las lecciones anteriores vimos como configurar un virtualenv, activarlo e instalar paquetes. Para comenzar nos movemos a la carpeta del proyecto y activamos el virtualenv.

$ cd ~/Proyecto/tareas
$ source tareas/bin/activate

Nos movemos a la carptea del backend que es donde está toda la lógica del proyecto Django.

$ cd tareas

Ahora vamos a instalar los paquetes que necesitamos:

$ pip install graphene-django django-filter

Además de graphene-django, instalamos django-filter porque lo necesitaremos más adelante.

Configurando Django-Graphene

Lo primero que debemos hacer es añadir graphene-django a las APP del archivo de configuración settings.py de Django:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'graphene_django',

    'tareas'
]


Seguido, nos vamos hasta el final del archivo y añadimos la siguiente configuración:

GRAPHENE = {
    SCHEMA': 'backend.schema.schema',
}

El SCHEMA indica donde estará ubicado nuestro esquema principal. Como podemos ver, lo crearemos en la capeta backend que es el módulo principal del proyecto, pero lo podríamos poner en cualquier otro sitio.

Creamos el archivo schema.py en el directorio backend y le añadimos el siguiente código:

import graphene
from graphene_django.debug import DjangoDebug

class Query(graphene.ObjectType):
    debug = graphene.Field(DjangoDebug, name='_debug')

class Mutation(graphene.ObjectType):
    debug = graphene.Field(DjangoDebug, name='_debug')

schema = graphene.Schema(query=Query, mutation=Mutation)

Las clases Query y Mutation son usadas como base para crear la estructura de nuestro Schema, por el momento lo vamos a dejar así para que funcione. En la próxima lección haremos algunos cambios.

Creando el endpoint unico de GrahpQL

Ahora vamos a crear el único endpiont que se creea con GraphQL, desde donde será consumida nuestra api.

Editamos el archivo urls.py que está en el backend y añadimos la siguiente url:

path('graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True))),

de tal modo que quede así:

from django.urls import path
from django.contrib import admin

from graphene_django.views import GraphQLView
from django.views.decorators.csrf import csrf_exempt

urlpatterns = [
    path('admin/', admin.site.urls),
    path('graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True))),
]

Aquí lo más importante es el parámetro graphiql=True, el cual si lo establecemos en True nos va permitir testear la api a través de una interfaz web. Después, cuando estemos en producción debemos establecerla en False.

Bueno, ahora podemos abrir nuestro navegador y probar la siguiente url: http://localhost:8000/graphql

Si todo ha salido bien deberíamos estár viendo una consola como la siguiente:

Consola GraphQL

Bueno, esto es todo por hoy, cualquier duda en los comentarios.

En la próxima lección comenzaremos a hacer las primeras consultas en la API. Recuerda subscribirte a nuestro boletín para que no te pierdas ninguna publicación.

El código de este proyecto está disponible en Github por si lo quieres descargar:

Nos vemos.

 

 



Déjanos un comentario

Artículos relacionados