Python 如何使用Axios/Vue.js从SQLite/Django后端调用数据?
现状: 每当用户访问我的web应用程序时,Axios都会向第三方API发出请求,以获取数据,并使用Python 如何使用Axios/Vue.js从SQLite/Django后端调用数据?,python,django,vue.js,axios,Python,Django,Vue.js,Axios,现状: 每当用户访问我的web应用程序时,Axios都会向第三方API发出请求,以获取数据,并使用v-for将数据填充到前端 结论:我有一个API调用每个网站访问者 所需状态: from django.shortcuts import render from Quotes_app.models import ratesEUR import json import requests response = requests.get("http://data.fixer.io/api/latest
v-for
将数据填充到前端
结论:我有一个API调用每个网站访问者
所需状态:
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=XXXX&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']
id = 1
rates_new = ratesEUR(id=id, 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)
from django.db import models
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
每当用户访问我的web应用程序时,Axios应从SQLite数据库中获取数据,该数据库本身每XX秒由python请求填充一次,以减少API调用
问题:
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=XXXX&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']
id = 1
rates_new = ratesEUR(id=id, 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)
from django.db import models
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
现在,我使用Django模型和视图实现了一个SQLite数据库。到目前为止还不错,API会定期获取并正确更新数据库表
1。)现在如何使用Axios调用数据库中的数据?根据我的研究,Axios需要调用视图
,而视图
将调用数据库中的数据,对吗
2.如果Axios需要调用视图
,我是否需要另一个调用数据库的view.py
文件?如果我将所需的view
函数插入现有的view.py
文件,它将启动另一个API调用,不是吗
3。)我如何实现到Axios的视图
功能的链接?我是否只使用视图
文件的路径而不是第三方API url
Quotes\u app/Views.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=XXXX&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']
id = 1
rates_new = ratesEUR(id=id, 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)
from django.db import models
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
Quotes\u app/models.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=XXXX&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']
id = 1
rates_new = ratesEUR(id=id, 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)
from django.db import models
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
Vue.js/axios:(目前直接获取API)
Vue.config.devtools=true;
var app=新的Vue({
分隔符:['[',']]'],
el:“.eurQuotesWrapper”,
数据(){
返回{
费率:[],
};
},
计算:{
费率1(){
const ratesar1=Object.entries(this.rates);
const ret=ratesar1.reduce((a,c,i,d)=>{
如果(i{
如果(i>=d.length/2)a[c[0]=c[1];
返回a;
}, {});
控制台日志('rates2',ret);
返回ret;
}
},
创建(){
axios
.get(“http://data.fixer.io/api/latest?access_key=XXXX&base=EUR")
。然后(响应=>{
this.rates=response.data.rates;
console.log(this.rates);
for(请在此输入。费率){
this.rates[key]=新的Intl.NumberFormat('de-de'{
最小分数位数:5,
最大分数位数:5
}).格式(本.费率[键]);
}
console.log(this.rates);
});
}
});
非常感谢您的帮助您可以使用DRF(Django Rest框架)制作Rest API,也可以使用JsonResponse
发送JSON对象作为响应
from django.http import JsonResponse
data = # Your data
JsonResponse(data, encoder=MyJSONEncoder)
如果您使用DRF来制作RESTAPI会更好。这容易多了。