Vue与Flask实现前后端分离及数据交互

本文介绍了如何使用Vue作为前端框架,结合Vuex管理和Axios进行数据请求,与后端轻量级Python Web框架Flask进行交互。前端通过Element UI组件库提升用户体验,后端处理跨域问题以实现前后端的顺利通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前端框架:

vue:前端开发框架

vuex:前端数据仓库,用于数据存储

axios:前端网络请求库,用于发http/https请求

element:前端UI控件

2、后端框架:

flask:轻量级python web框架

----------------------------------------------------------

在前端代码,App.vue文件的<!--展示模板--><template>,引入elementUI,例如:

    <form action = "">
      <p>请输入通知消息:</p>
      <p><input type = "text" v-model="formMessage.message"/></p>
    </form>
    <el-button type="primary" @click="getBackend">提交到后端</el-button>
    <el-input
        type="textarea"
        :rows="2"
        placeholder="请输入内容"
        v-model="textarea">
    </el-input>

然后在<script>,将elementUI的数据进行获取,并传给axios发请求,然后通过vuex存储数据,再通过vuex把数据给到前端的文本域控件利用v-model进行回显:

store.js代码:

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
        backendData:'x'
    },
    mutations: {
        set_backdata(state, data) {
            state.backendData = data
        }
    },
    actions:{
        get_backdata({ commit }, value) {
            commit('set_backdata', value);
            // commit('SET_TOKEN', value2)
        }
    },
  getters: { //数据处理or计算
      bkdata(state){
          return state.backendData;
      }
  }
})
export default store;

App.vue代码:

<script>
//导入组件
import HelloWorld from './components/HelloWorld.vue'
import axios from "axios";

export default {
  name: 'App',
  components: {
    HelloWorld
  },
  data() {
    return {
      textarea: "",
      formMessage:{
        "message":""
      }
    }
  },
  computed:{
    returnData(){
      return this.$store.getters.bkdata
    }
  },
  created(){
    // this.getBackend()
  },
  methods: {
    getBackend() {
      const url = "http://127.0.0.1:5000/guest/" + this.$data.formMessage.message;

      axios.get(url)
          .then((res) => {
            this.$store.dispatch('get_backdata',res.data) //将后端数据存储到vuex里
            this.textarea=this.returnData
          })
          .catch((error) => {
            console.log(error);
          })
    }
  }
}
</script>

由于前后端的端口不同,以及将来独立部署的域名也不同,后端flask需要进行跨域处理(test.py):

from flask import Flask, redirect, url_for, request
from flask_cors import CORS

app = Flask(__name__)
# 跨域
CORS(app)


@app.route('/')
def hello_world():
    return 'Hello World'


@app.route('/guest/<guest>')
def hello_guest(guest):
    return 'Hello %s as Guest' % guest


@app.route('/user/<name>')
def hello_user(name):
    if name == 'admin':
        return redirect(url_for('hello_world admin'))
    else:
        return redirect(url_for('hello_guest', guest=name))


@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name


@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        user = request.form['nm']
        return redirect(url_for('success', name=user))
    else:
        user = request.args.get('nm')
        return redirect(url_for('hello_user', name=user))


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

实现效果:

有任何疑问欢迎留言交流~

### 回答1: Python FlaskVue 前端可以通过 RESTful API 进行交互。以下是一个简单的示例: 1. 在 Flask 中编写 API: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/api/data', methods=['GET']) def get_data(): # 获取前端发送的参数 param = request.args.get('param') # 处理参数 result = do_something(param) # 将结果返回给前端 return jsonify(result) ``` 2. 在 Vue 中发送请求: ```javascript import axios from 'axios' export default { data() { return { result: null } }, methods: { fetchData() { axios.get('/api/data', { params: { param: 'hello' } }).then(response => { this.result = response.data }).catch(error => { console.log(error) }) } } } ``` 在这个示例中,Vue 组件中的 `fetchData` 方法使用 `axios` 发送 GET 请求到 Flask 的 `/api/data` 接口,并传递一个名为 `param` 的参数。Flask 中的 `get_data` 函数接收这个参数并处理后返回一个 JSON 格式的结果,这个结果会被 Vue 组件中的 `result` 数据接收并显示在页面上。 ### 回答2: Python Flask是一种轻量级的Web应用框架,它提供了灵活的路由系统、模板引擎及多种其他功能,可以快速搭建Web应用。而Vue是一种前端框架,提供了多种组件和工具,使得前端开发更加简单和便利。 在Python FlaskVue前端交互方面,主要有两种方法:RESTful API和Websocket。 首先,RESTful API是一种基于HTTP协议的接口设计风格,使用HTTP请求(GET、POST、PUT、DELETE等)来处理客户端请求,并返回JSON格式的数据。在Flask中,可以使用Flask-restful等库来构建RESTful API,通过提供API接口,Vue可以轻松实现Python后台的数据访问和更新。 其次,Websocket是一种双向通信协议,它使用WS协议在浏览器和服务器之间创建长连接,实现服务器端主动推送数据到客户端或客户端主动向服务器发送数据的功能。在Flask中,可以使用Flask-SocketIO等库来实现Websocket支持,Vue可以通过SocketIO库连接到Python后台的Websocket服务器,使用实时通信功能。 无论是RESTful API还是Websocket,Python FlaskVue的结合都可以实现数据的双向传输,增加应用的交互性。通过合理地设计API接口和数据模型,以及处理异常情况和安全问题等,能够实现高效、可靠、安全的Web应用。同时,线上服务的稳定性、运行效率、性能调优等也需要关注和优化。 ### 回答3: Python FlaskVue前端交互是很常见的场景,它们可以在web应用程序中一起使用,提供了优秀的用户体验。Python Flask是一个基于Python语言的Web框架,Vue是一种现代的JavaScript框架,用于构建交互式的用户界面。 在使用Python FlaskVue前端进行交互时,我们需要实现一个RESTful API,通过这个API来实现后端和前端之间的通信。具体实现步骤如下: 1. 在Python Flask中创建RESTful API Flask提供了一个Flask-RESTful扩展,它可以帮助我们更方便地创建RESTful API。我们可以通过使用该扩展,以类的形式定义资源,然后设置路由和HTTP方法,从而创建API。在这里,我们需要在Python Flask中定义API路由,并处理前端发送过来的请求。 例如,在Flask中,我们可以使用类似以下代码来创建一个RESTful API: ``` from flask_restful import Resource,Api app = Flask(__name__) api = Api(app) class Hello(Resource): def get(self): return {'hello': 'world'} api.add_resource(Hello, '/api/hello') ``` 上述代码将会创建一个API,并使用Hello类来处理GET请求。当前端发送GET请求时,将会返回‘hello:world’。 2. 在Vue中使用axios发送请求 在Vue中发送HTTP请求的常用方式是使用axios库。它可以轻松地对后端API进行调用。我们可以在Vue中编写一个方法来发送请求,并将其我们的模板代码绑定。在这里,我们使用axios库发送GET请求获取后端API响应。 例如,在Vue中,我们可以添加以下代码来发送请求: ``` import axios from 'axios' Vue.component('hello',{ template: `<div>{{ hello }}</div>`, data(){ return { hello: '' } }, mounted(){ axios.get('/api/hello') .then(response => { this.hello = response.data.hello }) } }) ``` 上述代码将会向后端API发送GET请求,并将后端返回的数据渲染到模板中。 3. 在Vue中使用API 我们可以通过在Vue组件中引用后端API的URL,以HTTP请求的方式后端API进行交互。在这里,我们可以在Vue组件中定义一个data对象,并在其中定义一个属性来保存我们的API返回结果。 例如,在Vue中,我们可以添加以下代码来定义一个组件: ``` <template> <div>{{ hello }}</div> </template> <script> export default { data() { return { hello: '', } }, mounted() { fetch('/api/hello') .then(response => response.json()) .then(data => this.hello = data.hello) }, } </script> ``` 上述代码将会从后端API获取数据,并将其渲染到组件中。 总结 Python FlaskVue前端的结合为web应用程序提供了很好的用户体验。通过使用RESTful API,我们可以轻松地在PythonVue之间进行通信,实现数据的相互传递和交互。在Vue中使用axios库来发送请求,然后在组件中使用数据,可以轻松地后端API通信。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值