Adds GraphQL over HTTP and WebSockets to Django Channels.
Install with:
pip install graphql-server[channels]
Use GraphQLProtocolTypeRouter from graphql_server.channels.
from channels.routing import ProtocolTypeRouter
from graphql_server.channels import GraphQLProtocolTypeRouter
from schema import schema
application = ProtocolTypeRouter(
{
"": GraphQLProtocolTypeRouter(schema, url_pattern=r"^graphql"),
}
)CORS
Use
django-cors-headersfor cross-origin requests.
schemadjango_applicationurl_patternhttp_consumer_classws_consumer_class
You can also subclass GraphQLView and overwrite get_root_value(self, request) to have a dynamic root value per request.
class UserRootValue(GraphQLView):
def get_root_value(self, request):
return request.userSee CONTRIBUTING.md