0

问题

在 Django 中,当在视图中使用来自 API 的数据(不需要保存到数据库中)时,是否有理由更喜欢以下之一:

  1. 将 API 数据 (json) 转换为 json 字典并传递给模板
  2. 将 API 数据 (json) 从 models.py 转换为适当的模型对象,然后将其传递给模板

到目前为止我所考虑的

  • 性能:我对这两种方法都进行了计时,并对它们进行了 25 次迭代的平均。将 API 响应转换为模型对象大约慢了 50 毫秒(0.4117 对 0.4583 秒,+11%)。这不包括定时渲染。
  • 不将此数据保存到数据库确实会阻止我与 API 的数据创建多对多关系(必须在添加 M2M 关系之前保存一个对象),但是,我希望 API 充当此数据的存储,而不是我的应用程序
  • DRY:如果我发现自己在多个视图中使用此 API 数据,我可能会发现将我所有的消费/清洁/等都放入其中很方便。模型中适当对象__init__中的代码。

首先十分感谢。

4

2 回答 2

2

将其转换为模型对象不需要将其存储在数据库中。

此外,如果您确定不想存储它,则可能将其放在 models.py 中并使其成为 Django 模型是错误的想法。可能它应该只是普通的 Python 类,例如在 resources.py 或类似的东西中,不要将它与模型混淆。我更喜欢这种方式,因为可能转换速度较慢(非常小),但它不仅允许添加自定义构造函数,还允许添加其他方法和属性,这非常有帮助。当您使用普通的类和对象时,它也很方便并且可以组织东西。

于 2012-10-05T16:25:29.190 回答
0

将字典列表直接传递给模板。当您需要将它与模型一起使用时,请.values()改为从中获取字典列表。

于 2012-10-05T16:25:13.347 回答