Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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 如何使用Axios/Vue.js从SQLite/Django后端调用数据?_Python_Django_Vue.js_Axios - Fatal编程技术网

Python 如何使用Axios/Vue.js从SQLite/Django后端调用数据?

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

现状:

每当用户访问我的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?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会更好。这容易多了。