-------------------
Add functions `get_root_value` and `get_context` to views for Django, Flask and
ASGI. They can be overridden to provide custom values per request.
Django example:
python
views.py
from strawberry.django.views import GraphQLView as BaseGraphQLView
class GraphQLView(BaseGraphQLView):
def get_context(self, request):
return {
"request": request,
"custom_context_value": "Hi!",
}
def get_root_value(self, request):
return {
"custom_root_value": "🍓",
}
urls.py
from django.urls import path
from .views import GraphQLView
from .schema import schema
urlpatterns = [
path("graphql/", GraphQLView.as_view(schema=schema)),
]
Flask example:
python
views.py
from strawberry.flask.views import GraphQLView as BaseGraphQLView
class GraphQLView(BaseGraphQLView):
def get_context(self, request):
return {
"request": request,
"custom_context_value": "Hi!",
}
def get_root_value(self, request):
return {
"custom_root_value": "🍓",
}
app.py
from flask import Flask
from .views import GraphQLView
from .schema import schema
app = Flask(__name__)
app.add_url_rule(
"/graphql",
view_func=GraphQLView.as_view("graphql_view", schema=schema),
)
ASGI example:
python
app.py
from strawberry.asgi import GraphQL as BaseGraphQL
from .schema import schema
class GraphQL(BaseGraphQLView):
async def get_context(self, request):
return {
"request": request,
"custom_context_value": "Hi!",
}
async def get_root_value(self, request):
return {
"custom_root_value": "🍓",
}
app = GraphQL(schema)