Django는 Python으로 작성된 웹 애플리케이션 프레임워크이며, GraphQL은 데이터 쿼리 언어 및 런타임입니다. Django와 GraphQL을 연동하여 강력한 웹 애플리케이션을 개발할 수 있습니다.
필수 패키지 설치
Django와 GraphQL를 연동하기 위해서는 몇 가지 패키지를 설치해야 합니다. 가상 환경에서 다음 명령어를 실행하여 설치합니다.
pip install django graphene-django
django
: Django 웹 프레임워크 패키지graphene-django
: Django와 GraphQL을 연동하기 위한 패키지
GraphQL 설정
- Django 프로젝트의
settings.py
파일을 엽니다. -
INSTALLED_APPS
에'graphene_django'
를 추가합니다.INSTALLED_APPS = [ # ... 'graphene_django', # ... ]
-
settings.py
파일의 맨 아래에 다음 내용을 추가합니다.GRAPHENE = { 'SCHEMA': 'myproject.schema.schema', }
myproject
는 본인의 프로젝트명으로 변경해야 합니다. - Django 프로젝트의 루트 디렉토리에
schema.py
파일을 생성합니다. -
schema.py
파일에 다음 내용을 작성합니다.import graphene class Query(graphene.ObjectType): # 여기에 Query 타입 필드들을 추가합니다. pass schema = graphene.Schema(query=Query)
Query
타입 필드들은 실제 데이터를 조회하기 위한 GraphQL 쿼리들을 정의하는 곳입니다. - Django 프로젝트의
urls.py
파일을 엽니다. -
다음 내용을 추가합니다.
from django.urls import path from graphene_django.views import GraphQLView urlpatterns = [ # ... path('graphql', GraphQLView.as_view(graphiql=True)), # ... ]
이제 Django 애플리케이션의
http://localhost:8000/graphql
로 접속하면 GraphQL IDE를 사용할 수 있습니다.
GraphQL 스키마 작성
schema.py
파일에서는 GraphQL 스키마를 작성해야 합니다. 필요한 데이터에 따라 Query 필드를 정의하고, 해당 필드의 리졸버 함수를 작성합니다. 리졸버 함수는 실제 데이터를 조회하고 반환하는 로직을 구현합니다. 예를 들어, User
객체를 조회하는 GraphQL 쿼리를 작성하려면 다음과 같이 작성할 수 있습니다.
class Query(graphene.ObjectType):
users = graphene.List(UserType)
def resolve_users(self, info):
return User.objects.all()
UserType
은 User
객체를 GraphQL 타입으로 변환하는 역할을 합니다.
GraphQL 데이터 수정
GraphQL은 데이터를 조회하는 것뿐만 아니라, 데이터를 수정하기 위한 기능도 제공합니다. Mutation을 사용하여 데이터를 생성, 수정, 삭제할 수 있습니다. schema.py
파일에서 Mutation
필드를 정의하고 해당 필드의 리졸버 함수를 작성합니다. 예를 들어, 새로운 User
를 생성하는 GraphQL Mutation을 작성하려면 다음과 같이 작성할 수 있습니다.
class CreateUser(graphene.Mutation):
class Arguments:
username = graphene.String(required=True)
email = graphene.String(required=True)
success = graphene.Boolean()
def mutate(self, info, username, email):
user = User(username=username, email=email)
user.save()
return CreateUser(success=True)
class Mutation(graphene.ObjectType):
create_user = CreateUser.Field()
위의 코드에서 CreateUser
는 User
객체를 생성하고, Mutation
은 create_user
필드를 추가하는 역할을 합니다. 필요한 경우 CreateUser
에서 데이터의 유효성 검사를 수행할 수도 있습니다.
마무리
Django와 GraphQL을 연동하여 강력하고 유연한 웹 애플리케이션을 개발할 수 있습니다. 이 문서에서는 Django와 GraphQL 연동 방법을 간단하게 소개했지만, 더욱 깊이있는 사용법과 고급 기능을 익히고 싶다면 각 패키지의 공식 문서를 참고하시기 바랍니다. Happy coding!