Build powerful, efficient, and flexible GraphQL APIs with seamless Django integration.
Go to file
MardanovTimur f967433dab fix name
2019-05-28 03:37:41 +03:00
bin Isolated Graphene Django in a new package 2016-09-17 16:31:17 -07:00
docs Merge pull request #506 from ccsv/patch-1 2018-09-05 13:30:40 +02:00
examples fixed custom directives 2019-03-22 22:51:19 +03:00
graphene_django cleanup the code 2019-05-22 01:00:30 +03:00
.coveragerc Improved python syntax and sorts (pep8). Improved Readme 2016-09-17 17:09:56 -07:00
.gitignore Add Vim.gitignore to .gitignore 2017-02-14 20:22:51 +02:00
.travis.yml Add back support for django-filter < 2 2018-09-04 13:15:04 -04:00
django_test_settings.py added ModelSerializer tests 2017-11-13 20:33:12 +00:00
LICENSE add license to repo 2018-05-25 01:28:51 -04:00
MANIFEST.in add license to repo 2018-05-25 01:28:51 -04:00
pytest.ini create pytest.ini to contain DJANGO_SETTINGS_MODULE 2016-11-16 09:56:55 -08:00
README.md fix name 2019-05-28 03:37:41 +03:00
README.rst Update README.rst 2017-11-28 21:04:08 -05:00
setup.cfg Removed duplicate bdist_wheel section 2017-08-31 15:34:22 +02:00
setup.py fix 2019-05-21 15:03:43 +03:00

Please read UPGRADE-v2.0.md to learn how to upgrade to Graphene 2.0.


Graphene Logo Graphene-Neo4j Build Status PyPI version Coverage Status

A Django integration for Graphene.

Installation

For installing graphene, just run this command in your shell

pip install "graphene-neo4j>=2.0"

Settings

Use basic graphene_django package in INSTALLED_APPS

INSTALLED_APPS = (
    # ...
    '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 neomodel model:

from neomodel import *

class UserModel(StructuredNode):
    name = StringProperty(required=True)
    age = IntegerProperty()

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:
        # pass yours model here, the fields are define automatically
        model = UserModel

class Query(graphene.ObjectType):
    users = graphene.List(User)

    def resolve_users(self, info):
        return UserModel.nodes.all()

schema = graphene.Schema(query=Query)

Relay schema

import graphene
from graphene_django import DjangoObjectType
from graphene_django.filter.fields import DjangoFilterConnectionField

class UserType(DjangoObjectType):
    class Meta:
        # pass yours model here, the fields are define automatically
        model = UserModel

        # definition of filter settings
        # key - the <field_name>
        # value - the list of search instructions
        neomodel_filter_fields = {
            'name': ['icontains', 'contains', 'exact'],
            'age': ['lte', 'gte', 'gt'],
        }

        interfaces = (
            graphene.relay.Node,
        )

class Query(graphene.ObjectType):
    """ The types resolves automatically
    """
    user = graphene.relay.Node.Field(UserType)
    users = DjangoFilterConnectionField(UserType)


schema = graphene.Schema(query=Query)

Then you can simply query the schema:

query = '''
    query {
      users {
        name
        age
      }
    }
'''
result = schema.execute(query)

To learn more check out the following examples:

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