当前位置:   article > 正文

Vue与Flask实现前后端分离及数据交互_vue和flask是怎么交互的

vue和flask是怎么交互的

1、前端框架:

vue:前端开发框架

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

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

element:前端UI控件

2、后端框架:

flask:轻量级python web框架

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

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

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

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

store.js代码:

  1. import Vue from "vue";
  2. import Vuex from "vuex";
  3. Vue.use(Vuex)
  4. const store = new Vuex.Store({
  5. state: {
  6. backendData:'x'
  7. },
  8. mutations: {
  9. set_backdata(state, data) {
  10. state.backendData = data
  11. }
  12. },
  13. actions:{
  14. get_backdata({ commit }, value) {
  15. commit('set_backdata', value);
  16. // commit('SET_TOKEN', value2)
  17. }
  18. },
  19. getters: { //数据处理or计算
  20. bkdata(state){
  21. return state.backendData;
  22. }
  23. }
  24. })
  25. export default store;

App.vue代码:

  1. <script>
  2. //导入组件
  3. import HelloWorld from './components/HelloWorld.vue'
  4. import axios from "axios";
  5. export default {
  6. name: 'App',
  7. components: {
  8. HelloWorld
  9. },
  10. data() {
  11. return {
  12. textarea: "",
  13. formMessage:{
  14. "message":""
  15. }
  16. }
  17. },
  18. computed:{
  19. returnData(){
  20. return this.$store.getters.bkdata
  21. }
  22. },
  23. created(){
  24. // this.getBackend()
  25. },
  26. methods: {
  27. getBackend() {
  28. const url = "http://127.0.0.1:5000/guest/" + this.$data.formMessage.message;
  29. axios.get(url)
  30. .then((res) => {
  31. this.$store.dispatch('get_backdata',res.data) //将后端数据存储到vuex里
  32. this.textarea=this.returnData
  33. })
  34. .catch((error) => {
  35. console.log(error);
  36. })
  37. }
  38. }
  39. }
  40. </script>

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

  1. from flask import Flask, redirect, url_for, request
  2. from flask_cors import CORS
  3. app = Flask(__name__)
  4. # 跨域
  5. CORS(app)
  6. @app.route('/')
  7. def hello_world():
  8. return 'Hello World'
  9. @app.route('/guest/<guest>')
  10. def hello_guest(guest):
  11. return 'Hello %s as Guest' % guest
  12. @app.route('/user/<name>')
  13. def hello_user(name):
  14. if name == 'admin':
  15. return redirect(url_for('hello_world admin'))
  16. else:
  17. return redirect(url_for('hello_guest', guest=name))
  18. @app.route('/success/<name>')
  19. def success(name):
  20. return 'welcome %s' % name
  21. @app.route('/login', methods=['POST', 'GET'])
  22. def login():
  23. if request.method == 'POST':
  24. user = request.form['nm']
  25. return redirect(url_for('success', name=user))
  26. else:
  27. user = request.args.get('nm')
  28. return redirect(url_for('hello_user', name=user))
  29. if __name__ == '__main__':
  30. app.run()

实现效果:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/66544?site
推荐阅读
相关标签
  

闽ICP备14008679号