使用django中的外部API数据更新数据库

时间:2016-04-12 17:25:16

标签: python django web

我正在学习Django我正在研究的一个项目,我在实现这个部分时遇到了问题,基本上我希望我的这个发生:

  1. 用户在搜索框中输入字词
  2. 服务器查询公共API并将一些数据添加到数据库
  3. 我的模型在视图中设置了一个表单。所以我可以从帖子请求中获取搜索词。但是我不确定如何使用它来收集数据并将其保存到数据库中。

    该模型只是一个基本字段列表:

    fileName = models.CharField(max_length=120)
    rating = models.FloatField()
    date = models.DateField()
    

    表单只是fileName的文本框:

    class searchFile(forms.ModelForm):
    class Meta:
        model = file
        fields = ['fileName']
    

    我可以自己研究如何从API收集数据,我对如何从代码而不是直接从表单输入数据到数据库感到困惑。

    例如,我怎么能这样做,以便当用户在表单中输入fileName时,fileName被输入到数据库中,而所有其他字段都被随机数据填充?

1 个答案:

答案 0 :(得分:-1)

一旦您从API获得数据,就可以使用save()函数更新Django模型。这是我所做的一个例子。

def home(请求): api_key =“ your_api_key”

# sports api response
sports_response = requests.get('https://api.the-odds-api.com/v3/sports', params={
    'api_key': api_key
})

sports_response_json = sports_response.json()

#loop through the list to update the database

for sports in sports_response_json['data']:
    sports_update = Sport(name=sports['key'])
    sports_update.**save()**

sports_objects = Sport.objects  # getting all the job objects
return render(request, 'home.html', {'Sports': sports_objects})