将JSON(dict)与模型对象传递给Django中的模板

时间:2012-10-05 15:45:35

标签: python django

问题

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

  1. 将API数据(json)转换为json字典并传递给模板
  2. 将models数据(json)从models.py转换为相应的模型对象,然后将其传递给模板
  3. 我到目前为止所考虑的

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

    非常感谢。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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