django - 如何将javascript对象存储在数据库中
问题描述
我是 django/react 的新手,我正在尝试通过创建战舰游戏来学习。我已经使用 React 编写了一些前端,但我想通过 django 将我目前作为 javascript 对象拥有的游戏状态存储在我的数据库中,以便两个玩家共享。我的状态对象有两个属性:一个代表棋盘状态和历史的数组数组对象,以及一个如下所示的 Ship 对象数组。
class Game extends React.Component {
constructor(props) {
super(props);
this.state = {
history: [{ squares: Array(9).fill(null) }],
ships: [new Ship(14, "N"), new Ship(37, "E"), new Ship(84, "S")]
};
}
//...
}
我想我可能必须序列化状态对象才能做到这一点,但不知道如何去做。我见过的大多数问题/答案都在谈论序列化模型,但我认为这不是我需要的。我想序列化一个自定义对象,将其存储在数据库中,然后在将其发送到玩家的浏览器时对其进行反序列化。
解决方案
有一些方法可以用 Django 存储 JSON 对象,如下所示:
from django.db import models
from django_mysql.models import JSONField
class Example(models.Model):
example = JSONField(...)
在这里阅读更多。
但是,根据我的经验,我发现通过 aTextField
或类似方法将 JSON 作为字符串存储在数据库中更容易,然后在需要时解析 JSON。这是一些伪代码:
# models.py
from django.db import models
class Example(models.Model):
json_example = models.TextField(...)
# where the model is used, perhaps views.py
import json
from .models import Example
def my_view(request):
my_example = Example.objects.get(...)
my_json = json.loads(my_example.json_example)
...
推荐阅读
- html - 引导页面,不会滚动到最后。Container-Fluid 已设置为最小高度:100%
- angular - 无法以角度预选多项选择中的值
- r - 在 R CMD INSTALL 作为对通过控制台安装包的响应
- javascript - 如何从循环生成文本到html?
- bash - echo -e "$(git status)" 失去颜色
- python - Seaborn 热图:交换 X 和 Y 轴
- sql - Sequelize - 在不同条件下两次计算相同的关联
- elasticsearch - Elasticsearch 查询(控制台) - 基于聚合计数的后过滤器
- javascript - 来自 PHP 的 Flot Chart
- c# - 在 AWS Cognito 中调用 (Admin)InitiateAuthRequest 以获取具有范围的访问令牌