Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 是否将API请求保存和更新为Django模型?_Python_Django_Steam - Fatal编程技术网

Python 是否将API请求保存和更新为Django模型?

Python 是否将API请求保存和更新为Django模型?,python,django,steam,Python,Django,Steam,我目前正在乱搞Steam API,以获取玩家详细信息、游戏库存等。我很难想出一个解决方案,如何保存一个非常昂贵的API请求 我使用DOTA2获取特定游戏的整个项目模式 这是一个非常昂贵的请求,因此我需要将其存储在数据库中,以便获得与特定用户库存相关的项目详细信息 我有几个问题: 如何在数据库中保存所有这些信息?我需要吗 手动创建模型,然后过滤并保存数据?如果是这样的话,我该如何做呢?例如,我是在models.py中的模型级别做这件事,还是在视图中做这件事 接下来,在进行更新时,我将如何更新对项目

我目前正在乱搞Steam API,以获取玩家详细信息、游戏库存等。我很难想出一个解决方案,如何保存一个非常昂贵的API请求

我使用DOTA2获取特定游戏的整个项目模式

这是一个非常昂贵的请求,因此我需要将其存储在数据库中,以便获得与特定用户库存相关的项目详细信息

我有几个问题:

如何在数据库中保存所有这些信息?我需要吗 手动创建模型,然后过滤并保存数据?如果是这样的话,我该如何做呢?例如,我是在models.py中的模型级别做这件事,还是在视图中做这件事

接下来,在进行更新时,我将如何更新对项目架构所做的任何更改

在上面的第2个问题中,如何创建一个脚本,使其仅在需要更新数据库时才能运行。我能想到的一种方法是设置一个URL,当被访问时它会启动更新,但我不确定这是否是最好的


谢谢

你的问题真的很大。 首先,您必须在settings.py中设置数据库的信息,以便将所有信息保存到数据库中。必须在models.py中设置字段才能将所有值恢复到数据库中。比如说,

...
name = models.CharField(max_length=20,blank=True,verbose_name='your name')
...
第二,当有更新时,就会有一个请求。一旦收到该请求,就可以对其进行解析,然后将其保存到数据库中。这可以在您收到更新请求的地方完成。 第三,我认为有两种方法。一个就像你说的,使用URL。另一种是直接调用update函数。这是Python,对吗?您可以根据需要调用任何函数


希望有帮助。

第一个问题的答案取决于您希望如何处理历史数据。如果您不关心API中的历史值,即昨天到今天武器上的属性是否发生了更改,而只关心当前值,即现在武器上的属性是什么,那么您可以简单地缓存结果

这种缓存可以通过多种方式完成,但最简单的方法是将整个API结果保存到本地数据库中。这也有效地解决了您的第二个问题-如何更新它?拉取新的API模式并保存它。您不必担心解析出模式的所有方面,只需更新适当的内容。您还可以避免意外的模式更改,因为您只需保存整个内容

如果需要历史数据,则需要解析响应。您必须对整个模式进行建模,并在系统中为值加盖日期戳。每次检查更新时,都必须向系统中添加新条目。绝大多数模式在更新之间不会改变。如果不处理未更改的数据(例如质量、原始名称、项目级别),您会发现大量数据重复,并且大多数项目本身不会受到任何给定更新的影响

您对选项3的建议是一个有效的想法,尽管它需要有人(可能是您)手动访问。不过,它可能是最容易实现的