这是我第一次尝试使用Django模型,我一直在做一些小的尝试,但是暂时被卡住了。在
我想使用Python/Django将从第三方API获取的数据存储到SQLite数据库中(我在Django之上构建webapp)。在
理论上,我的想法是:使用request库获取数据。在
操作它使它符合Python
通过分配给变量来提取数据
使用Django将数据推送到SQLite数据库model
获取SQLite数据以呈现前端
到目前为止,我得到的是:
报价应用程序/模型.py:from django.db import models
# create class to store API fetched data
class ratesEUR(models.Model):
timestamp = models.CharField(max_length=10)
base = models.CharField(max_length=3)
date = models.DateField(auto_now=False, auto_now_add=False)
rates = models.CharField(max_length=8)
def __str__(self):
return self.base
当我运行models.py时,我得到以下错误:
^{pr2}$
报价应用程序/视图.py:from django.shortcuts import render
from Quotes_app.models import ratesEUR
import json
import requests
response = requests.get("http://data.fixer.io/api/latest?access_key=XXX&base=EUR")
rates_EUR = json.loads(response.content.decode('utf-8'))
timestamp = rates_EUR['timestamp']
base = rates_EUR['base']
date = rates_EUR['date']
rates = rates_EUR['rates']
rates_new = ratesEUR(timestamp=timestamp, base=base, date=date, rates=rates)
rates_new.save()
def render_Quotes_app(request, template="Quotes_app/templates/Quotes_app/Quotes_app.html"):
return render(request, template)
当我运行views.py时,我得到了以下错误,数据库没有被填充:from Quotes_app.models import ratesEUR
ModuleNotFoundError: No module named 'Quotes_app'
[Finished in 0.421s]
json响应如下:{
"success": true,
"timestamp": 1573382946,
"base": "EUR",
"date": "2019-11-10",
"rates": {
"AED": 4.047045,
"AFN": 86.223727,
"ALL": 123.086065,
"AMD": 525.791674,
[...]
}
设置.py:INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Quotes_app',
'Wiki_app',
]
除了上述错误之外,我还有以下问题:我是否正确地定义了表/模型,以便能够相应地表示JSON数据,还是需要某种嵌套结构,甚至需要一个链接到另一个的额外表?
是否可以选择每120秒自动发出一次请求?
我怎样才能用数据库中新获取的数据覆盖最后一个数据对象?(我不再需要过时的数据)
在模块.py文件还是其他文件?
事先非常感谢您的建议!在