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 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
vue中三级导航的菜单权限控制
Mar 31 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
Vue如何清空对象
Mar 03 Vue.js
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python数据处理numpy.median的实例讲解
2018/04/02 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
解决django FileFIELD的编码问题
2020/03/30 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
python3实现飞机大战
2020/11/29 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
保护环境的建议书
2014/03/12 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
社会实践的活动方案
2014/08/22 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers