Graphene-Django é uma biblioteca de código aberto que fornece integração perfeita entre Django, uma estrutura web Python de alto nível, e Graphene, uma biblioteca para construção de APIs GraphQL. A biblioteca permite que os desenvolvedores criem APIs GraphQL no Django de forma rápida e eficiente, mantendo um alto nível de desempenho.
Para instalar o Graphene-Django, execute o seguinte comando:
pip install graphene-django
Após a instalação, adicione 'graphene_django' à lista INSTALLED_APPS
do seu projeto Django e defina o esquema GraphQL nas configurações do seu projeto:
INSTALLED_APPS = [
# ...
'graphene_django' ,
]
GRAPHENE = {
'SCHEMA' : 'myapp.schema.schema'
}
Para usar Graphene-Django, crie um arquivo schema.py
no diretório do seu aplicativo Django e defina seus tipos e 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 )
Em seguida, exponha a API GraphQL no arquivo urls.py
do seu projeto 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 fornece suporte para testar APIs GraphQL usando o cliente de teste do Django. Para criar testes, crie um arquivo tests.py
no diretório do seu aplicativo Django e escreva seus casos de teste:
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 ())
Contribuições para Graphene-Django são sempre bem-vindas! Para começar, verifique o rastreador de problemas e as diretrizes de contribuição do repositório.
Graphene-Django é lançado sob a licença do MIT.
Se você encontrar algum problema ou tiver dúvidas sobre o Graphene-Django, sinta-se à vontade para enviar um problema no repositório oficial do GitHub. Você também pode pedir ajuda e compartilhar suas experiências com a comunidade Graphene-Django no Discord