基于Vue和Flask 的前后端开发的例子

简介

前端框架为Vue-cli 4和vuetify 组件搭建;
后端用Flask搭建;
前后端通信采用Axios;
前端输入两个数字,发送到后端python 求和后返回数值到前端。

相关技术和问题

  1. Axios 使用
    网上有比较详细的说明,可参阅网上的说明 安装和调用。
  2. vue.config.js 的配置
module.exports = {
    // webpack-dev-server 相关配置
    devServer: {
        proxy: {
            '/api': {
                target: 'http://127.0.0.1:5000', // Flask的端口
                ws: true,
                changeOrigin: true,
                pathRewrite: {
                    '^/api': ''  //通过pathRewrite重写地址,将前缀/api转为/
                }
            }
        }
    },
}

网上也有详细的说明。

  1. 前端代码
<template>
  <v-form>
    <v-container>
      <v-row>

        <v-col cols="12" sm="6" md="3">
          <v-text-field v-model="a"
            label="Regular"
          ></v-text-field>
        </v-col>

        <v-col cols="12" sm="6" md="3">
          <v-text-field v-model= "b"
            label="Regular"
            placeholder="Placeholder"
          ></v-text-field>
        </v-col>

      <div class="my-2">
        <v-btn small color="primary" @click.native="onadd()">Primary</v-btn>
		<h2>sum:{{sum}}</h2>

      </div>


      </v-row>
    </v-container>
  </v-form>
</template>
<script>
import axios from "axios";
export default {

   data() {
       return {
        sum:'',          //声明变量 sum
       };
     },

    methods:{
     onadd() {
        axios
       .get("/api/addnumber",{  //发送到后端获取结果,其中/api对应vue.config.js 中的api
            params:{
                a:this.a,
                b:this.b
            }
})
      .then(res =>{console.log(res.data)
            this.sum = res.data.result   //获取后端计算结果   
       })
       }
  }

};
</script>

注意 v-model=“a” 和 this.a是关联的,

  1. 后端代码
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)


@app.route('/')
# @app.route('/index.html')
# def index():
    # return render_template('index.html')


@app.route('/addnumber')
def add():
    a = request.args.get('a', 0, type=float)
    b = request.args.get('b', 0, type=float)
    return jsonify(result=a + b)    # 返回json 形式的结果

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

在这里插入图片描述

可能遇到的错误

  1. methods或属性 未找到
    注意拼写错误
  2. 跨域问题
    target 要为后端服务器的ip和端口号。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VueFlask后端交互中,可以通过以下几个步骤实现: 1. 在端创建一个输入框,用于输入英文单词。 2. 添加一个提交按钮,在按钮点击事件中发送POST请求将输入的数据传递给Flask后端。 3. 在Flask后端接收到数据后进行处理,比如翻译英文单词。 4. 处理完成后,将结果返回给端。 5. 在端页面上显示后端返回的数据。 具体步骤如下: 1. 在Vue端中创建一个输入框,可以使用`<input>`标签: ``` <input v-model="word" type="text" placeholder="输入英文单词"> ``` 2. 添加一个提交按钮,在按钮点击事件中发送POST请求给Flask后端,可以使用Vue的`axios`库发送请求: ``` <button @click="submitData">提交</button> ... methods: { submitData() { // 使用axios发送POST请求给Flask后端 axios.post('/api/translate', { word: this.word }) .then(response => { // 处理后端返回的数据 this.translation = response.data.translation; }) .catch(error => { console.error(error); }); } } ``` 3. 在Flask后端中,创建一个接口用于接收端发送的POST请求,并进行处理,可以使用`@app.route`装饰器来定义路由: ``` @app.route('/api/translate', methods=['POST']) def translate(): # 接收端发送的数据 word = request.json['word'] # 处理数据,比如进行翻译 translation = translate_word(word) # 返回处理结果给端 return jsonify({'translation': translation}) ``` 4. 在端页面上显示后端返回的数据,可以在Vue模板中添加一个用于显示翻译结果的标签: ``` <p>{{ translation }}</p> ``` 通过以上步骤,就可以实现VueFlask后端交互,端将输入的数据发送给后端进行处理,后端再将处理结果返回给端显示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【VUE】小白入门(3)vue与后端Flask数据传输交互(demo)](https://blog.csdn.net/EchoooZhang/article/details/104640241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [十分钟使用VUEFlask快速搭建后端分离项目](https://blog.csdn.net/weixin_44247218/article/details/111708204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值