Vue和Flask通信的實(shí)現(xiàn)
安裝axios和實(shí)現(xiàn)通信
這里我們通過(guò)axios來(lái)連接Vue前端和Flask后端,使用AJAX請(qǐng)求進(jìn)行通信。使用如下命令安裝
npm install axios
axios的使用格式:
import axios from 'axios';
export default {
data: function () {
return {
serverResponse: 'res_test'
};
},
methods: {
getData() {
// 設(shè)置對(duì)應(yīng)python的接口,這里使用的是localhost:5000
const path = 'http://127.0.0.1:5000/getMsg';
// 這里要使用 res =>表示返回的數(shù)據(jù)
axios.get(path).then(res => {
// 這里服務(wù)器返回response為一個(gè)json對(duì)象
// 通過(guò).data來(lái)訪返回的數(shù)據(jù),然后在通過(guò).變量名進(jìn)行訪問(wèn)
// 可以直接通過(guò)response.data取得key-value
var msg = res.data.msg;
this.serverResponse = msg; // 因?yàn)椴荒苤苯邮褂胻his作為指針,因此在這之前將this賦給了then指針
alter('Success' + response.status + ',' + response.data + ',' + msg); // 成功后顯示提示
}).catch(error => {
console.error(error);
});
}
},
}
代碼及演示
前端代碼
對(duì)./components/HelloWorld.vue文件進(jìn)行改寫。代碼如下:
<!-- html部分 -->
<template>
<div>
<span>{{ serverResponse }}</span>
<!--這里使用{{}}來(lái)引用JavaScript中賦給this的值-->
<button @click="getData">get data</button>
</div>
</template>
<!-- js部分 -->
<script>
import axios from 'axios';
export default {
data: function () {
return {
serverResponse: 'res_test'
};
},
methods: {
getData() {
// 設(shè)置對(duì)應(yīng)python的接口,這里使用的是localhost:5000
const path = 'http://127.0.0.1:5000/getMsg';
axios.get(path).then(res => {
// 這里服務(wù)器返回response為一個(gè)json對(duì)象
// 通過(guò).data來(lái)訪返回的數(shù)據(jù),然后在通過(guò).變量名進(jìn)行訪問(wèn)
// 可以直接通過(guò)response.data取得key-value
var msg = res.data.msg;
this.serverResponse = msg; // 因?yàn)椴荒苤苯邮褂胻his作為指針,因此在這之前將this賦給了then指針
alter('Success' + response.status + ',' + response.data + ',' + msg); // 成功后顯示提示
}).catch(error => {
console.error(error);
});
}
},
}
</script>
<!-- css部分 -->
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1,
h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
這里主要實(shí)現(xiàn)了通過(guò)單擊按鈕來(lái)和服務(wù)器端進(jìn)行交互獲得數(shù)據(jù)并傳回前端,將得到的數(shù)據(jù)重新來(lái)對(duì)前端進(jìn)行渲染。

得到如上頁(yè)面之后,我們單擊get date按鈕,就會(huì)像后端發(fā)送GET請(qǐng)求,后端服務(wù)器監(jiān)聽到請(qǐng)求之后就會(huì)返回對(duì)應(yīng)的數(shù)據(jù)。

客戶端代碼
from flask import Flask
from flask import jsonify
from flask_cors import CORS
app = Flask(__name__)
cors = CORS(app, resources={r"/getMsg": {"origins": "*"}})
@app.route('/')
def hello_world():
return 'test!'
# 監(jiān)聽127.0.0.1:5000/getMsg請(qǐng)求
@app.route('/getMsg', methods=['GET', 'POST'])
def home():
response = {
'msg': 'Hello, Python !'
}
return response
if __name__ == '__main__':
app.run()
到此這篇關(guān)于Vue和Flask通信的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vue和Flask通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)數(shù)字動(dòng)態(tài)翻牌的效果(開箱即用)
這篇文章主要介紹了vue實(shí)現(xiàn)數(shù)字動(dòng)態(tài)翻牌的效果(開箱即用),實(shí)現(xiàn)原理是激將1到9的數(shù)字豎直排版,通過(guò)translate移動(dòng)位置顯示不同數(shù)字,本文通過(guò)實(shí)例代碼講解,需要的朋友可以參考下2019-12-12
關(guān)于antd-vue?a-menu菜單綁定路由的相關(guān)問(wèn)題
這篇文章主要介紹了關(guān)于antd-vue?a-menu菜單綁定路由的相關(guān)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
vue路由 遍歷生成復(fù)數(shù)router-link的例子
今天小編就為大家分享一篇vue路由 遍歷生成復(fù)數(shù)router-link的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
vue使用keep-alive無(wú)效以及include和exclude用法解讀
這篇文章主要介紹了vue使用keep-alive無(wú)效以及include和exclude用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目實(shí)現(xiàn)添加圖片裁剪組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳的方法
WebUploader是由 Baidu WebFE(FEX) 團(tuán)隊(duì)開發(fā)的一個(gè)簡(jiǎn)單的以 HTML5為主 , FLASH為輔 的現(xiàn)代 文件上傳組件 。這篇文章主要介紹了在Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳,需要的朋友可以參考下2019-07-07

