mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-21 17:16:56 +03:00
Build powerful, efficient, and flexible GraphQL APIs with seamless Django integration.
bin | ||
examples | ||
graphene_django | ||
.gitignore | ||
.travis.yml | ||
django_test_settings.py | ||
README.md | ||
setup.cfg | ||
setup.py |
You are in the next
unreleased version of Graphene-Django (1.0.dev
).
Please read UPGRADE-v1.0.md to learn how to upgrade.
Graphene-Django
Graphene is a Python library for building GraphQL schemas/types fast and easily.
- Easy to use: Graphene helps you use GraphQL in Python without effort.
- Relay: Graphene has builtin support for Relay
- Django: Automatic Django model mapping to Graphene Types. Check a fully working Django implementation
Graphene also supports SQLAlchemy!
What is supported in this Python version? Everything: Interfaces, ObjectTypes, Scalars, Unions and Relay (Nodes, Connections), in addition to queries, mutations and subscriptions.
NEW!: Try graphene online
Installation
For instaling graphene, just run this command in your shell
pip install "graphene-django>=1.0.dev"
Examples
Here is one example for get you started:
from django.db import models
from graphene_django import DjangoObjectType
class UserModel(models.Model):
name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
class User(DjangoObjectType):
class Meta:
# This type will transform all the UserModel fields
# into Graphene fields automatically
model = UserModel
# An extra field in the User Type
full_name = graphene.String()
def resolve_full_name(self, args, context, info):
return "{} {}".format(self.name, self.last_name)
If you want to learn even more, you can also check the following examples:
- Schema with Filtering: Cookbook example
- Relay Schema: Starwars Relay example
Contributing
After cloning this repo, ensure dependencies are installed by running:
python setup.py install
After developing, the full test suite can be evaluated by running:
python setup.py test # Use --pytest-args="-v -s" for verbose mode