Python 将JSON(dict)与模型对象传递给Django中的模板 问题:
在Django中,当在视图中使用API(不需要保存到数据库)中的数据时,是否有理由选择以下选项之一:Python 将JSON(dict)与模型对象传递给Django中的模板 问题:,python,django,Python,Django,在Django中,当在视图中使用API(不需要保存到数据库)中的数据时,是否有理由选择以下选项之一: 将API数据(json)转换为json字典并传递给模板 将API数据(json)从models.py转换为适当的模型对象,然后将其传递给模板 到目前为止我所考虑的 性能:我对这两种方法进行计时,并在25次迭代中对它们取平均值。将API响应转换为模型对象大约慢了50毫秒(0.4117秒对0.4583秒,+11%)。这不包括计时渲染 不将此数据保存到数据库会阻止我创建与API数据的多对多关系(必须
- 性能:我对这两种方法进行计时,并在25次迭代中对它们取平均值。将API响应转换为模型对象大约慢了50毫秒(0.4117秒对0.4583秒,+11%)。这不包括计时渲染
- 不将此数据保存到数据库会阻止我创建与API数据的多对多关系(必须在添加M2M关系之前保存对象),但是,我希望API充当此数据的存储,而不是我的应用
- DRY:如果我发现自己在多个视图中使用此API数据,我可能会发现将所有消费/清洁/等代码放在模型中适当的对象
中很方便\uuuu init\uuu
非常感谢。将词典列表直接传递给模板。当您需要将其用于模型时,请使用以从中获取字典列表。将其转换为模型对象不需要将其存储在数据库中
另外,如果您确定不想存储它,则可能将其放在models.py中并使其成为Django models是错误的想法。可能它应该只是普通的Python类,例如在resources.py或类似的东西中,不要将其与模型混淆。我更喜欢这种方式,因为转换可能较慢(非常小),但它不仅允许添加自定义构造函数,还允许添加其他方法和属性,这非常有用。当您使用普通类和对象时,它也很方便,可以组织内容。模板是否可以与API以外的任何东西一起使用?是的。除了某些模板上的API数据外,我还必须使用
models.py
中的另一个模型。您需要什么时候保存数据?在拉它的时候还是以后?@BurhanKhalid我不需要存储数据。理想情况下,我可以使用API作为每个请求的数据源,并完全避免存储数据库。谢谢。然后把数据拉出来,放到缓存里,用缓存代替。我选择了这条路线。我已经在resources.py中定义了我的数据模型,我将使用它应用一些方便的特性,如方法、缓存等(正如您所指出的)。谢谢谢谢你的回复。我选择使用@jasisz,因为它允许我使用一些方便的特性(自定义方法等)。干杯