Django/Django Channels - странный вид возврата json с двойным \ между каждым полем

Здравствуйте, я пытаюсь сделать систему уведомления о запросах друзей в реальном времени и получаю странный вид json. Я новичок в разработке бэкенда и django (студент 1-го курса факультета программной инженерии). Мне просто интересно, нормально ли это, поскольку я не видел ничего подобного, и есть ли способ это исправить. Я уже работал над приложением для чата, но там были только текстовые сообщения, и поэтому я запутался, когда дело дошло до моделей django. Я пробовал несколько способов, которые я нашел, но только этот работает. Я думаю, что это может быть потому, что я дважды вызывал json.dumps, но если я удалю любой из них, это не сработает. Спасибо

Когда пользователь посылает запрос на дружбу, вот что я получил обратно из веб-сокета (с двойным \ для каждого поля) enter image description here

Вот код //views.py

class SendRequestView(views.APIView):
permission_class = (permissions.IsAuthenticated,)

def post(self, request, *args, **kwargs):
    receiver_username = self.kwargs['receiver_username']
    if receiver_username is not None:
        receiver = get_object_or_404(User, username=receiver_username)
        request = ConnectRequest.objects.create(sender=self.request.user, receiver=receiver)
        notification = ConnectNotification.objects.create(type='connect request', receiver=receiver, initiated_by=self.request.user)
        channel_layer = get_channel_layer()
        channel = f'notifications_{receiver.username}'
        async_to_sync(channel_layer.group_send)(
            channel, {
                'type': 'notify',
                'notification': json.dumps(ConnectNotificationSerializer(notification).data, cls=DjangoJSONEncoder),
            }
        )
        data = {
            'status': True,
            'message': 'Success',
        }
        return JsonResponse(data)

// consumer.py

class ConnectNotificationConsumer(AsyncJsonWebsocketConsumer):

async def connect(self):
    user = self.scope['user']
    group_layer = f'notifications_{user.username}'
    await self.accept()
    await self.channel_layer.group_add(group_layer, self.channel_name)

async def disconnect(self, close_code):
    user = self.scope['user']
    group_layer = f'notifications_{user.username}'
    await self.channel_layer.group_discard(group_layer, self.channel_name)

async def notify(self, event):
    notification = event['notification']
    await self.send(text_data=json.dumps({
             'notification': notification
        })
    )
Вернуться на верх