Есть ли у кого-нибудь опыт применения Django Rest Framework в проекте oTree. Я хочу сериализовать запрос сохраненных сообщений чата, сохраненных из приложения чата, и отправить их как JSON в веб-сокет, чтобы они могли отображаться в веб-интерфейсе. Когда я сериализуюсь с функцией from django.core.serializers import serialize
и анализирую ее во внешнем интерфейсе, я получаю не желаемый объект JSON, а просто JSON в строке.
models.py
class Message(models.Model):
content = models.TextField()
timestamp = django_models.DateTimeField(auto_now=True)
player = models.ForeignKey('Player', on_delete=models.CASCADE, null=True)
def last_15_messages(self):
return Message.objects.order_by('-timestamp').all()[:15]
consumer.py
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
messages_from_db = serialize('json', Message.last_15_messages(self))
messages_from_db_json = json.dumps({
'messages_from_db': messages_from_db
})
# Send message to room group
await self.channel_layer.group_send(
self.room_name,
{
'type': 'chat_message',
"message": {
"chat_message": message,
"db": messages_from_db_json
}
}
)
play. html
socket.onmessage = event => {
let data = JSON.parse(event.data).message;
let db = JSON.stringify(event.data).message.db;
console.log(db);
};
Я добавил два изображения, одно из которых отображает json запроса во внутреннем интерфейсе и полученную строку в консоли javascript во внешнем интерфейсе.
Backend Image
Frontend Image