Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将JSON(dict)与模型对象传递给Django中的模板 问题:_Python_Django - Fatal编程技术网

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

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数据的多对多关系(必须

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

  • 将API数据(json)转换为json字典并传递给模板
  • 将API数据(json)从models.py转换为适当的模型对象,然后将其传递给模板
  • 到目前为止我所考虑的
    • 性能:我对这两种方法进行计时,并在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,因为它允许我使用一些方便的特性(自定义方法等)。干杯