有没有人有将 Django Rest 框架应用于 oTree 项目的经验。我想序列化从聊天应用程序保存的已保存聊天消息的查询,并将它们作为 JSON 发送到 websocket,以便它们可以显示在前端。当我用
from django.core.serializers import serialize
函数序列化并在前端解析它时,我没有得到理想的 JSON 对象,而只是字符串中的 JSON。
模型.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]
消费者.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
}
}
)
播放.html
socket.onmessage = event => {
let data = JSON.parse(event.data).message;
let db = JSON.stringify(event.data).message.db;
console.log(db);
};
我添加了两张图片,一张在后端显示查询的 json,在前端的 javascript 控制台中显示接收到的字符串。