Graphene-Django est une bibliothèque open source qui offre une intégration transparente entre Django, un framework Web Python de haut niveau, et Graphene, une bibliothèque permettant de créer des API GraphQL. La bibliothèque permet aux développeurs de créer des API GraphQL dans Django rapidement et efficacement tout en conservant un haut niveau de performances.
Pour installer Graphene-Django, exécutez la commande suivante :
pip install graphene-django
Après l'installation, ajoutez 'graphene_django' à la liste INSTALLED_APPS
de votre projet Django et définissez le schéma GraphQL dans les paramètres de votre projet :
INSTALLED_APPS = [
# ...
'graphene_django' ,
]
GRAPHENE = {
'SCHEMA' : 'myapp.schema.schema'
}
Pour utiliser Graphene-Django, créez un fichier schema.py
dans le répertoire de votre application Django et définissez vos types et requêtes 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 )
Ensuite, exposez l'API GraphQL dans le fichier urls.py
de votre projet 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 prend en charge le test des API GraphQL à l'aide du client de test de Django. Pour créer des tests, créez un fichier tests.py
dans le répertoire de votre application Django et écrivez vos cas de test :
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 ())
Les contributions à Graphene-Django sont toujours les bienvenues ! Pour commencer, consultez le suivi des problèmes et les directives de contribution du référentiel.
Graphene-Django est publié sous la licence MIT.
Si vous rencontrez des problèmes ou avez des questions concernant Graphene-Django, n'hésitez pas à soumettre un problème sur le référentiel officiel GitHub. Vous pouvez également demander de l'aide et partager vos expériences avec la communauté Graphene-Django sur Discord.