搭建Flask+Vue及配置Vue 基础路由

最近一直在看关于Python的东西,准备多学习点东西.以前的项目是用Vue+Java写的,所以试着在升级下系统的前提下.能不能使用Python+Vue做一遍.

选择Flask的原因是不想随大流,并且比较轻量级,后面深度的配置会随着学习的不断深入,也随时写进入博客

第一步:安装Vue项目,这个请查看之前的帖子https://www.cnblogs.com/0909/p/9853618.html

第二步:配置路由,并且改变起始页面,首先需要在 src/components/xx.vue 如图所示,其中flaskTovue.vue是测试python与vue的连接是否成功的

第三步:配置路由 src/router/index.js

第四部:配置App.vue 修改成如图的样子:

第五步:npm run dev ,如图所示.可以试着在 "#/"后面输入About等看看页面是切换成功.

第六步:Python 和 Vue 通过Flask 连接起来,我是参考了例子:https://www.jianshu.com/p/ead7317d01ec

Python 代码如下(通过Pycharm 配置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 'Hello World!'

@app.route('/getMsg',methods=['GET','POST'])
def home():
    response = {
        ##这里面填写和后台交互的代码
        'msg': 'Hello, Python !'
    }
    return jsonify(response)

##启动运行
if __name__ == '__main__':
    app.run()

第七步:flaskTovue.vue的设置

代码如下:

<template>
  <div>
    <span>{{ serverResponse }} </span>
    <button @click="getData">GET DATA</button>
  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "my-first-vue",
  data: function() {
    return {
      serverResponse: "resp"
    };
  },
  methods: {
    getData() {
      var that = this;
      // 对应 Python 提供的接口,这里的地址填写下面服务器运行的地址,本地则为127.0.0.1,外网则为 your_ip_address
      const path = "http://127.0.0.1:5000/getMsg";
      axios
        .get(path)
        .then(function(response) {
          // 这里服务器返回的 response 为一个 json object,可通过如下方法需要转成 json 字符串
          // 可以直接通过 response.data 取key-value
          // 坑一:这里不能直接使用 this 指针,不然找不到对象
          var msg = response.data.msg;
          // 坑二:这里直接按类型解析,若再通过 JSON.stringify(msg) 转,会得到带双引号的字串
          that.serverResponse = msg;

          alert(
            "Success " + response.status + ", " + response.data + ", " + msg
          );
        })
        .catch(function(error) {
          alert("Error " + error);
        });
    }
  }
};
</script>

成功之后测试结果为:

 

posted @ 2018-11-27 16:52  ~@@~  阅读(10799)  评论(0编辑  收藏  举报