3.8 KiB
Settings
Graphene-Django can be customised using settings. This page explains each setting and their defaults.
Usage
Add settings to your Django project by creating a Dictonary with name GRAPHENE
in the project's settings.py
:
= {
GRAPHENE
... }
SCHEMA
The location of the top-level Schema
class.
Default: None
= {
GRAPHENE 'SCHEMA': 'path.to.schema.schema',
}
SCHEMA_OUTPUT
The name of the file where the GraphQL schema output will go.
Default: schema.json
= {
GRAPHENE 'SCHEMA_OUTPUT': 'schema.json',
}
SCHEMA_INDENT
The indentation level of the schema output.
Default: 2
= {
GRAPHENE 'SCHEMA_INDENT': 2,
}
MIDDLEWARE
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',
), }
RELAY_CONNECTION_ENFORCE_FIRST_OR_LAST
Enforces relay queries to have the first
or last
argument.
Default: False
= {
GRAPHENE 'RELAY_CONNECTION_ENFORCE_FIRST_OR_LAST': False,
}
RELAY_CONNECTION_MAX_LIMIT
The maximum size of objects that can be requested through a relay connection.
Default: 100
= {
GRAPHENE 'RELAY_CONNECTION_MAX_LIMIT': 100,
}
CAMELCASE_ERRORS
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.'],
# }
# ]
DJANGO_CHOICE_FIELD_ENUM_V3_NAMING
Set to True
to use the new naming format for the auto generated Enum types from Django choice fields. The new format looks like this: {app_label}{object_name}{field_name}Choices
Default: False
DJANGO_CHOICE_FIELD_ENUM_CUSTOM_NAME
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_V3_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"
}
SUBSCRIPTION_PATH
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"
}