Graphene-Django es una biblioteca de código abierto que proporciona una integración perfecta entre Django, un marco web Python de alto nivel, y Graphene, una biblioteca para crear API GraphQL. La biblioteca permite a los desarrolladores crear API GraphQL en Django de forma rápida y eficiente manteniendo un alto nivel de rendimiento.
Para instalar Graphene-Django, ejecute el siguiente comando:
pip install graphene-django
Después de la instalación, agregue 'graphene_django' a la lista INSTALLED_APPS
de su proyecto Django y defina el esquema GraphQL en la configuración de su proyecto:
INSTALLED_APPS = [
# ...
'graphene_django' ,
]
GRAPHENE = {
'SCHEMA' : 'myapp.schema.schema'
}
Para usar Graphene-Django, cree un archivo schema.py
en el directorio de su aplicación Django y defina sus tipos y consultas GraphQL:
import graphene
from graphene_django import DjangoObjectType
from . models import MyModel
class MyModelType ( DjangoObjectType ):
class Meta :
model = MyModel
class Query ( graphene . ObjectType ):
mymodels = graphene . List ( MyModelType )
def resolve_mymodels ( self , info , ** kwargs ):
return MyModel . objects . all ()
schema = graphene . Schema ( query = Query )
Luego, expone la API GraphQL en el archivo urls.py
de tu proyecto Django:
from django . urls import path
from graphene_django . views import GraphQLView
from . import schema
urlpatterns = [
# ...
path ( 'graphql/' , GraphQLView . as_view ( graphiql = True )), # Given that schema path is defined in GRAPHENE['SCHEMA'] in your settings.py
]
Graphene-Django brinda soporte para probar las API GraphQL utilizando el cliente de prueba de Django. Para crear pruebas, cree un archivo tests.py
en el directorio de su aplicación Django y escriba sus casos de prueba:
from django . test import TestCase
from graphene_django . utils . testing import GraphQLTestCase
from . import schema
class MyModelAPITestCase ( GraphQLTestCase ):
GRAPHENE_SCHEMA = schema . schema
def test_query_all_mymodels ( self ):
response = self . query (
'''
query {
mymodels {
id
name
}
}
'''
)
self . assertResponseNoErrors ( response )
self . assertEqual ( len ( response . data [ 'mymodels' ]), MyModel . objects . count ())
¡Las contribuciones a Graphene-Django siempre son bienvenidas! Para comenzar, consulte el rastreador de problemas y las pautas de contribución del repositorio.
Graphene-Django se publica bajo la licencia MIT.
Si encuentra algún problema o tiene preguntas sobre Graphene-Django, no dude en enviar un problema en el repositorio oficial de GitHub. También puedes pedir ayuda y compartir tus experiencias con la comunidad Graphene-Django en Discord