当前位置:   article > 正文

Flask+Vue3前后端分离项目极简易版_flask+vue前后端项目

flask+vue前后端项目
  • Vue前端开发

参照上一篇博客搭建好一个Vue项目,下面对Vue项目中的文件进行添加和修改

安装需要的模块

在自己项目目录下执行下面的命令

npm install element-plus --save

打开element plus官网,可以看到组件列表

安装router

npm install vue-router@4

安装axios

npm install axios --save

新建一个组件UserLogin.vue

代码如下:

  1. <template>
  2. <div>
  3. <h2>Login Form</h2>
  4. <form @submit.prevent="submitForm">
  5. <div class="form-group">
  6. <label for="username">Username:</label>
  7. <input type="text" id="username" v-model="formData.username" required>
  8. </div>
  9. <div class="form-group">
  10. <label for="password">Password:</label>
  11. <input type="password" id="password" v-model="formData.password" required>
  12. </div>
  13. <button type="submit">Submit</button>
  14. </form>
  15. </div>
  16. </template>
  17. <script setup>
  18. import { ref } from 'vue';
  19. import axios from 'axios';
  20. const formData = ref({
  21. username: '',
  22. password: ''
  23. });
  24. const submitForm = () => {
  25. axios.post('http://localhost:5000/login', formData.value, {
  26. headers: {
  27. 'Content-Type': 'application/json'
  28. }
  29. })
  30. .then(response => {
  31. console.log(response.data);
  32. // 处理成功响应
  33. })
  34. .catch(error => {
  35. console.error(error);
  36. // 处理错误
  37. });
  38. };
  39. </script>

submitForm函数使用Axios库发送POST请求到Flask后端的http://localhost:5000/login路由(这里如果你的后端路由不一样,需要更改为你定义的路由),这个是使得前后端连接的重要部分

如果能成功 运行的话该页面显示如下:

App.vue

在app.vue中做如下修改:

  1. <template>
  2. <router-view/>
  3. <h1>我是一个test</h1>
  4. <el-row class="mb-4">
  5. <el-button>Default</el-button>
  6. <router-link to="/login">
  7. <el-button type="primary">Login</el-button>
  8. </router-link>
  9. <el-button type="success">Success</el-button>
  10. <el-button type="info">Info</el-button>
  11. <el-button type="warning">Warning</el-button>
  12. <el-button type="danger">Danger</el-button>
  13. </el-row>
  14. </template>
  15. <script>
  16. </script>
  17. <style>
  18. #app {
  19. font-family: Avenir, Helvetica, Arial, sans-serif;
  20. -webkit-font-smoothing: antialiased;
  21. -moz-osx-font-smoothing: grayscale;
  22. text-align: center;
  23. color: #2c3e50;
  24. margin-top: 60px;
  25. }
  26. </style>

App.vue是主界面,一打开页面如下:

在router文件夹下,新建index.js文件

  1. import { createRouter, createWebHistory } from "vue-router";
  2. import UserLogin from "@/components/UserLogin.vue"; //导入路由
  3. const routes = [
  4. {
  5. path:'/login', // 要路由到的url路径
  6. name:'UserLogin',
  7. component:UserLogin,//导入路由页面的路径
  8. }
  9. ];
  10. const router = createRouter({ // 定义一个路由器
  11. history:createWebHistory(),
  12. routes
  13. });
  14. export default router;

定义了一个路由规则,将/login路径与名为UserLogin的组件关联起来。

修改main.js

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import 'element-plus/dist/index.css'
  4. import ElementPlus from 'element-plus'
  5. import router from './router/index'
  6. createApp(App).use(ElementPlus).use(router).mount('#app')

至此,前端部分就写完了。

Flask后端开发

就是新建一个app.py,然后添加如下代码:

  1. from flask import Flask, jsonify, request
  2. from flask_cors import CORS
  3. # instantiate the app
  4. app = Flask(__name__)
  5. app.config.from_object(__name__)
  6. # 用CORS(跨域资源共享)支持,允许跨域请求
  7. CORS(app, resources={r'/*': {'origins': '*'}}, supports_credentials=True)
  8. # 定义一个路由, 接收并处理数据,然后返回一个成功响应
  9. @app.route('/login', methods=['POST'])
  10. def index():
  11. data = request.get_json() # 获取前端发送的JSON数据
  12. app.logger.info("Received data: %s", data) # 记录接收到的数据到日志
  13. # 打印数据到控制台
  14. print("Received data:", data)
  15. return jsonify({'message': 'Login successful'})
  16. if __name__ == '__main__':
  17. # 运行Flask应用,监听默认端口(5000)
  18. app.run()

确保上述代码能够运行。

启动vue项目和flask项目

vue打开的初始页面时App.vue,

显示如下:

然后点击上面的login登录按钮,就会到login页面,也就是你写的UserLogin组件,如下所示:

启动flask项目。

然后用户在登录页面输入用户名和密码

点击提交,这是flask的控制台就会打印出用户名和密码

至此,前端Vue3和后端Flask App已经连接起来了,可以在后端定义前端传过来的数据处理逻辑。

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

闽ICP备14008679号