fcc3de2a90
When we use the `graphql_schema` management command, the output can vary from run to run depending on arbitrary factors (because there is no guarantee made about the order used to output JSON dictionary keys). This makes it difficult to compare two schema's at different points in time. We address this by including a new `canonical` flag to the command, which uses standard `json.dump` funcitonality to sort dictionary keys and force pretty-printed output. |
||
---|---|---|
bin | ||
docs | ||
examples | ||
graphene_django | ||
.coveragerc | ||
.gitignore | ||
.travis.yml | ||
django_test_settings.py | ||
LICENSE | ||
MANIFEST.in | ||
pytest.ini | ||
README.md | ||
README.rst | ||
setup.cfg | ||
setup.py |
Please read UPGRADE-v2.0.md to learn how to upgrade to Graphene 2.0
.
Graphene-Django
A Django integration for Graphene.
Installation
For installing graphene, just run this command in your shell
pip install "graphene-django>=2.0"
Settings
INSTALLED_APPS = (
# ...
'django.contrib.staticfiles', # Required for GraphiQL
'graphene_django',
)
GRAPHENE = {
'SCHEMA': 'app.schema.schema' # Where your Graphene schema lives
}
Urls
We need to set up a GraphQL
endpoint in our Django app, so we can serve the queries.
from django.conf.urls import url
from graphene_django.views import GraphQLView
urlpatterns = [
# ...
url(r'^graphql', GraphQLView.as_view(graphiql=True)),
]
Examples
Here is a simple Django model:
from django.db import models
class UserModel(models.Model):
name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
To create a GraphQL schema for it you simply have to write the following:
from graphene_django import DjangoObjectType
import graphene
class User(DjangoObjectType):
class Meta:
model = UserModel
class Query(graphene.ObjectType):
users = graphene.List(User)
def resolve_users(self, info):
return UserModel.objects.all()
schema = graphene.Schema(query=Query)
Then you can simply query the schema:
query = '''
query {
users {
name,
lastName
}
}
'''
result = schema.execute(query)
To learn more check out the following examples:
- Schema with Filtering: Cookbook example
- Relay Schema: Starwars Relay example
Contributing
After cloning this repo, ensure dependencies are installed by running:
pip install -e ".[test]"
After developing, the full test suite can be evaluated by running:
py.test graphene_django --cov=graphene_django # Use -v -s for verbose mode
Documentation
The documentation is generated using the excellent Sphinx and a custom theme.
The documentation dependencies are installed by running:
cd docs
pip install -r requirements.txt
Then to produce a HTML version of the documentation:
make html