Graphene-Django can be customised using settings. This page explains each setting and their defaults.
Add settings to your Django project by creating a Dictionary with name GRAPHENE
in the project's settings.py
:
GRAPHENE = {
...
}
The location of the top-level Schema
class.
Default: None
GRAPHENE = {
'SCHEMA': 'path.to.schema.schema',
}
The name of the file where the GraphQL schema output will go.
Default: schema.json
GRAPHENE = {
'SCHEMA_OUTPUT': 'schema.json',
}
The indentation level of the schema output.
Default: 2
GRAPHENE = {
'SCHEMA_INDENT': 2,
}
A tuple of middleware that will be executed for each GraphQL query.
See the middleware documentation for more information.
Default: ()
GRAPHENE = {
'MIDDLEWARE': (
'path.to.my.middleware.class',
),
}
Enforces relay queries to have the first
or last
argument.
Default: False
GRAPHENE = {
'RELAY_CONNECTION_ENFORCE_FIRST_OR_LAST': False,
}
The maximum size of objects that can be requested through a relay connection.
Default: 100
GRAPHENE = {
'RELAY_CONNECTION_MAX_LIMIT': 100,
}
When set to True
field names in the errors
object will be camel case.
By default they will be snake case.
Default: False
GRAPHENE = {
'CAMELCASE_ERRORS': False,
}
# result = schema.execute(...)
print(result.errors)
# [
# {
# 'field': 'test_field',
# 'messages': ['This field is required.'],
# }
# ]
GRAPHENE = {
'CAMELCASE_ERRORS': True,
}
# result = schema.execute(...)
print(result.errors)
# [
# {
# 'field': 'testField',
# 'messages': ['This field is required.'],
# }
# ]
Set to True
to use the old naming format for the auto generated Enum types from Django choice fields. The old format looks like this: {object_name}_{field_name}
Default: False
Define the path of a function that takes the Django choice field and returns a string to completely customise the naming for the Enum type.
If set to a function then the DJANGO_CHOICE_FIELD_ENUM_V2_NAMING
setting is ignored.
Default: None
# myapp.utils
def enum_naming(field):
if isinstance(field.model, User):
return f"CustomUserEnum{field.name.title()}"
return f"CustomEnum{field.name.title()}"
GRAPHENE = {
'DJANGO_CHOICE_FIELD_ENUM_CUSTOM_NAME': "myapp.utils.enum_naming"
}
Define an alternative URL path where subscription operations should be routed.
The GraphiQL interface will use this setting to intelligently route subscription operations. This is useful if you have more advanced infrastructure requirements that prevent websockets from being handled at the same path (e.g., a WSGI server listening at /graphql
and an ASGI server listening at /ws/graphql
).
Default: None
GRAPHENE = {
'SUBSCRIPTION_PATH': "/ws/graphql"
}
GraphiQL starting from version 1.0.0 allows setting custom headers in similar fashion to query variables.
Set to False
if you want to disable GraphiQL headers editor tab for some reason.
This setting is passed to headerEditorEnabled
GraphiQL options, for details refer to GraphiQLDocs.
Default: True
GRAPHENE = {
'GRAPHIQL_HEADER_EDITOR_ENABLED': True,
}
Define the graphql endpoint url used for the GraphQLTestCase class.
Default: /graphql
GRAPHENE = {
'TESTING_ENDPOINT': '/customEndpoint'
}
Set to True
if you want to persist GraphiQL headers after refreshing the page.
This setting is passed to shouldPersistHeaders
GraphiQL options, for details refer to GraphiQLDocs.
Default: False
GRAPHENE = {
'GRAPHIQL_SHOULD_PERSIST_HEADERS': False,
}