Tools for use [`graphene-django`](https://github.com/graphql-python/graphene-django)
Project description
Graphene django tools
Tools for use graphene-django
Install
pip install graphene-django-tools
Features
Resolver
Using mongoose-like schema to write apollo-like resolver.
simple example:
import graphene
import graphene_django_tools as gdtools
class Foo(gdtools.Resolver):
schema = {
"args": {
"key": 'String!',
"value": 'String!',
},
"type": 'String!',
}
def resolve(self, **kwargs):
self.parent # parent field
self.info # resolve info
self.context # django request object
return kwargs['value']
class Query(graphene.ObjectType):
foo = Foo.as_field()
{
foo(key: "k", value: "v")
}
{ "foo": "v" }
relay node:
class Pet(gdtools.Resolver):
schema = {
'type': {
'name': models.Pet._meta.get_field('name'),
'age': models.Pet._meta.get_field('age'),
},
'interfaces': (graphene.Node,)
}
def get_node(self, id_):
return models.Pet.objects.get(pk=id_)
def validate(self, value):
return isinstance(value, models.Pet)
class Query(graphene.ObjectType):
node = graphene.Node.Field()
schema = graphene.Schema(query=Query, types=[Pet.as_type()])
{
node(id: "UGV0OjE=") {
id
__typename
... on Pet {
name
age
}
}
}
{ "node": { "id": "UGV0OjE=", "__typename": "Pet", "name": "pet1", "age": 1 } }
relay connection:
class Item(gdtools.Resolver):
schema = {'name': 'String!'}
class Items(gdtools.Resolver):
schema = gdtools.get_connection(Item)
def resolve(self, **kwargs):
return gdtools.resolve_connection([{'name': 'a'}, {'name': 'b'}], **kwargs)
{
items {
edges {
node {
name
}
cursor
}
pageInfo {
total
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
{
"items": {
"edges": [
{ "node": { "name": "a" }, "cursor": "YXJyYXljb25uZWN0aW9uOjA=" },
{ "node": { "name": "b" }, "cursor": "YXJyYXljb25uZWN0aW9uOjE=" }
],
"pageInfo": {
"total": 2,
"hasNextPage": false,
"hasPreviousPage": false,
"startCursor": "YXJyYXljb25uZWN0aW9uOjA=",
"endCursor": "YXJyYXljb25uZWN0aW9uOjE="
}
}
}
complicated example:
class Foo(gdtools.Resolver):
_input_schema = {
"type": {"type": 'String'},
"data": [
{
"type":
{
"key": {
"type": 'String',
"required": True,
"description": "<description>",
},
"value": 'Int',
"extra": {
"type": ['String!'],
"deprecation_reason": "<deprecated>"
},
},
"required": True
},
],
}
schema = {
"args": {
"input": _input_schema
},
"type": _input_schema,
"description": "description",
"deprecation_reason": None
}
def resolve(self, **kwargs):
return kwargs['input']
{
foo(
input: { type: "type", data: [{ key: "key", value: 42, extra: ["extra"] }] }
) {
type
data {
key
value
extra
}
}
}
{
"foo": {
"type": "type",
"data": [{ "key": "key", "value": 42, "extra": ["extra"] }]
}
}
Query
ModelField
ModelConnectionField
ModelFilterConnectionField
Map the user model with filter in 10 lines.
Mutation
ModelMutation
ModelCreateMutation
ModelUpdateMutation
example: graphene_django_tools.auth
module
Map the user model with password validation in 40 lines.
Re-implemented Mutation
class
Supports arguments on interface.
class ClientMutationID(graphene.Interface):
"""Mutation with a client mutation id. """
class Arguments:
client_mutation_id = graphene.String()
client_mutation_id = graphene.String()
Data loader integrate
Enable by add 'graphene_django_tools.dataloader.middleware.DataLoaderMiddleware'
to your django settings GRAPHENE['MIDDLEWARE']
Development
run dev server: make dev
test: make test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file graphene_django_tools-0.19.1.tar.gz
.
File metadata
- Download URL: graphene_django_tools-0.19.1.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.7.5 Windows/7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d021728d66da892946ddcd612fea2c6133d7b244e9d7715ed9f1730ef7e65705 |
|
MD5 | 7596f48d8a8ad1682c20d8c05a8ec75d |
|
BLAKE2b-256 | 0be1e6719ccea1f924babd59d8f2f11d07ab1e3a5f47727e6bfe0371880c0365 |
Provenance
File details
Details for the file graphene_django_tools-0.19.1-py3-none-any.whl
.
File metadata
- Download URL: graphene_django_tools-0.19.1-py3-none-any.whl
- Upload date:
- Size: 33.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.7.5 Windows/7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b385604a41a22bc57e28628b2a63c0daa2944b512757243f217a0c3bb8969071 |
|
MD5 | 21543a386127690324ff2625eb080b2c |
|
BLAKE2b-256 | 64490efce146e72e88d60c3042ecde09ec659de3c2d469ea900e37f0d783e94a |