Vue和Flask通信的实现


Posted in Vue.js onMay 19, 2021

安装axios和实现通信

这里我们通过axios来连接Vue前端和Flask后端,使用AJAX请求进行通信。使用如下命令安装

npm install axios

axios的使用格式:

import axios from 'axios';
  export default {
    data: function () {
      return {
        serverResponse: 'res_test'
      };
    },
    methods: {
      getData() {
        // 设置对应python的接口,这里使用的是localhost:5000
        const path = 'http://127.0.0.1:5000/getMsg';
        // 这里要使用 res =>表示返回的数据
        axios.get(path).then(res => {
          // 这里服务器返回response为一个json对象
          // 通过.data来访返回的数据,然后在通过.变量名进行访问
          // 可以直接通过response.data取得key-value
          var msg = res.data.msg;
          this.serverResponse = msg; // 因为不能直接使用this作为指针,因此在这之前将this赋给了then指针
          alter('Success' + response.status + ',' + response.data + ',' + msg); // 成功后显示提示
        }).catch(error => {
          console.error(error);
        });
      }
    },
  }

代码及演示

前端代码

对./components/HelloWorld.vue文件进行改写。代码如下:

<!-- html部分 -->
<template>
  <div>
    <span>{{ serverResponse }}</span>
    <!--这里使用{{}}来引用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() {
        // 设置对应python的接口,这里使用的是localhost:5000
        const path = 'http://127.0.0.1:5000/getMsg';
        axios.get(path).then(res => {
          // 这里服务器返回response为一个json对象
          // 通过.data来访返回的数据,然后在通过.变量名进行访问
          // 可以直接通过response.data取得key-value
          var msg = res.data.msg;
          this.serverResponse = msg; // 因为不能直接使用this作为指针,因此在这之前将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>

这里主要实现了通过单击按钮来和服务器端进行交互获得数据并传回前端,将得到的数据重新来对前端进行渲染。

Vue和Flask通信的实现

得到如上页面之后,我们单击get date按钮,就会像后端发送GET请求,后端服务器监听到请求之后就会返回对应的数据。

Vue和Flask通信的实现

客户端代码

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!'

# 监听127.0.0.1:5000/getMsg请求
@app.route('/getMsg', methods=['GET', 'POST'])
def home():
    response = {
        'msg': 'Hello, Python !'
    }
    return response


if __name__ == '__main__':
    app.run()

到此这篇关于Vue和Flask通信的实现的文章就介绍到这了,更多相关Vue和Flask通信内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
Vue详细的入门笔记
May 10 Vue.js
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
解决vue中provide inject的响应式监听
Apr 19 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
Vue Element UI自定义描述列表组件
使用这 6个Vue加载动画库来减少我们网站的跳出率
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
详解vue中v-for的key唯一性
解读Vue组件注册方式
May 15 #Vue.js
如何理解Vue简单状态管理之store模式
May 15 #Vue.js
Vue如何实现组件间通信
May 15 #Vue.js
You might like
在PHP的图形函数中显示汉字
2006/10/09 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
web.py获取上传文件名的正确方法
2014/08/26 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
平面设计的岗位职责
2013/11/08 职场文书
餐厅总厨求职信
2014/03/04 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
优秀校长事迹材料
2014/12/24 职场文书
医生个人年终总结
2015/02/28 职场文书
个人简历求职信范文
2015/03/20 职场文书
2015年财务部工作总结
2015/04/10 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL