From 75cb9ec7f7d14576e9ed6000cd3607770061d2c0 Mon Sep 17 00:00:00 2001 From: Noam Stolero Date: Wed, 6 Dec 2023 15:51:15 +0200 Subject: [PATCH] Override encode_json() method in Django BaseView to use DjangoJSONEncoder (#3273) Signed-off-by: Noam Stolero --- RELEASE.md | 3 +++ strawberry/django/views.py | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 RELEASE.md diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000000..3ba0b1365b --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,3 @@ +Release type: minor + +Override encode_json() method in Django BaseView to use DjangoJSONEncoder diff --git a/strawberry/django/views.py b/strawberry/django/views.py index 5a09e4b71d..87406c10e9 100644 --- a/strawberry/django/views.py +++ b/strawberry/django/views.py @@ -13,6 +13,7 @@ ) from asgiref.sync import markcoroutinefunction +from django.core.serializers.json import DjangoJSONEncoder from django.http import HttpRequest, HttpResponseNotAllowed, JsonResponse from django.http.response import HttpResponse from django.template import RequestContext, Template @@ -159,8 +160,7 @@ def __init__( def create_response( self, response_data: GraphQLHTTPResponse, sub_response: HttpResponse ) -> HttpResponse: - data = self.encode_json(response_data) # type: ignore - + data = self.encode_json(response_data) response = HttpResponse( data, content_type="application/json", @@ -177,6 +177,9 @@ def create_response( return response + def encode_json(self, response_data: GraphQLHTTPResponse) -> str: + return json.dumps(response_data, cls=DjangoJSONEncoder) + class GraphQLView( BaseView,