Django/Django Channels - странный вид возврата json с двойным \ между каждым полем
Здравствуйте, я пытаюсь сделать систему уведомления о запросах друзей в реальном времени и получаю странный вид json. Я новичок в разработке бэкенда и django (студент 1-го курса факультета программной инженерии). Мне просто интересно, нормально ли это, поскольку я не видел ничего подобного, и есть ли способ это исправить. Я уже работал над приложением для чата, но там были только текстовые сообщения, и поэтому я запутался, когда дело дошло до моделей django. Я пробовал несколько способов, которые я нашел, но только этот работает. Я думаю, что это может быть потому, что я дважды вызывал json.dumps, но если я удалю любой из них, это не сработает. Спасибо
Когда пользователь посылает запрос на дружбу, вот что я получил обратно из веб-сокета (с двойным \ для каждого поля)
Вот код //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
})
)