Graphene-Django — это библиотека с открытым исходным кодом, которая обеспечивает плавную интеграцию между Django, веб-фреймворком высокого уровня Python, и Graphene, библиотекой для создания API-интерфейсов GraphQL. Библиотека позволяет разработчикам быстро и эффективно создавать API-интерфейсы GraphQL в Django, сохраняя при этом высокий уровень производительности.
Чтобы установить Graphene-Django, выполните следующую команду:
pip install graphene-django
После установки добавьте «graphene_django» в список INSTALLED_APPS
вашего проекта Django и определите схему GraphQL в настройках вашего проекта:
INSTALLED_APPS = [
# ...
'graphene_django' ,
]
GRAPHENE = {
'SCHEMA' : 'myapp.schema.schema'
}
Чтобы использовать Graphene-Django, создайте файл schema.py
в каталоге приложения Django и определите типы и запросы 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 )
Затем откройте API GraphQL в файле urls.py
вашего проекта 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 обеспечивает поддержку тестирования API-интерфейсов GraphQL с использованием тестового клиента Django. Чтобы создавать тесты, создайте tests.py
в каталоге приложения Django и напишите свои тестовые примеры:
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 ())
Вклад в Graphene-Django всегда приветствуется! Для начала ознакомьтесь с системой отслеживания проблем репозитория и рекомендациями по участию.
Graphene-Django выпускается под лицензией MIT.
Если у вас возникнут какие-либо проблемы или возникнут вопросы относительно Graphene-Django, сообщите о проблеме в официальном репозитории GitHub. Вы также можете обратиться за помощью и поделиться своим опытом с сообществом Graphene-Django на Discord.