首页 > 编程语言 >利用Vue3的axios+Python的flask实现前后端交互功能

利用Vue3的axios+Python的flask实现前后端交互功能

时间:2024-10-13 08:49:52浏览次数:1  
标签:__ axios num1 num2 Python sum flask Vue3 data

1 功能实现

1.1 功能

在网页中输入两个数字后,点击计算按钮在线计算(注意不是在浏览器端)获得两数之和。

1.2 思路

前端使用vue3的axios向服务器发送post请求,利用flask框架使python服务器返回计算后的数值,赋给前端的变量,最终在浏览器上显示。

2 前端部分:

2.1 html

<div>
<input v-model="num1" type="number" placeholder="输入第一个数字">
<input v-model="num2" type="number" placeholder="输入第二个数字">
<button @click="calculateSum">计算和</button>
<p>结果:{{ sum }}</p>
</div>
  • 这里在input中使用了vue3的v-model属性,作用是双向绑定,即将输入框中的数据分别同步到变量num1和num2中。type属性限制只能输入数字,placeholder属性在输入框中显示提示文字,引导用户输入。
  • button按钮使用了vue3的v-on:click,绑定了事件calculateSum,当鼠标点击按钮时触发该事件。
  • p结果中使用了双层花括号,用变量的值来替换,以实现计算结果的显示。

2.2 js

<script>
   import axios from 'axios';
   //import headBanner from './banner.vue';

   export default {
     name: 'WeatherComponent',
     components: {

        //headBanner,
     },
     data() {
        return {
        num1: null,
        num2: null,
        sum: null,
        };
    },
    methods: {
            calculateSum() {
        const num1Value = parseFloat(this.num1);
        const num2Value = parseFloat(this.num2);
        axios.post('http://127.0.0.1:8081/calculate', { num1: num1Value, num2: num2Value })
            .then(response => {
            this.sum = response.data.sum;
            })
            .catch(error => {
            console.error('发生错误:', error);
            });
        },
    },
   };
</script>
  • Axios是一个基于Promise的http客户端,用于在浏览器和node.js中发送HTTP请求。
  • 在js代码中,先导入axios库,然后在自定义组件中分别填写数据和方法。
  • data()是一个函数,用于返回变量的初始值。method用于填写各种函数方法,是网页交互的核心。
  • 这里定义函数calculateSum(),实现发送请求。
  • 首先把num1和num2从字符串转换成浮点数值,利用parseFloat()函数,注意填写参数时,要在变量前面加上this.,以明确作用域(类似于面向对象)。
  • 然后利用axios.post()函数向服务器发送请求,这里要填写两个参数,第一个参数是请求的接口地址,用单引号包裹,第二个参数是 { num1: num1Value, num2: num2Value }对象字面量,是一个对象的两个属性组成的键值对。
  • .then()用于在发送请求之后的执行。在其中填写response()函数,将对象的sum变量赋值为后端发送过来的sum变量,注意请求到的变量前面要加response.data.。.catch用于捕获和处理请求发生错误时的情况。

3 后端部分:

后端利用了python的flask框架,在使用flask框架之前,要先配置python的虚拟环境,否则无法安装和运行flask框架。

from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # 允许所有源的跨源请求,可以根据实际情况进行配置
@app.route('/calculate', methods=['POST'])
def calculate_sum():
    data = request.get_json()
    num1 = data.get('num1')
    num2 = data.get('num2')
    if num1 is not None and num2 is not None:
        sum_result = num1 + num2
        return jsonify({'sum': sum_result})
    else:
        return jsonify({'error': '无效的输入'}), 400

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

3.1 python虚拟环境安装

详见另一篇文章。

3.2 导入模块

  • from flask import Flask, request, jsonify:导入 Flask 框架的核心组件。Flask 用于创建应用实例,request 用于获取请求对象,jsonify 用于将 Python 字典转换为 JSON 格式的响应。
  • from flask_cors import CORS:导入用于处理跨源资源共享(CORS)的模块。

3.3 创建应用实例

app = Flask(__name__):创建一个 Flask 应用实例。__name__ 参数用于确定应用的位置,以便 Flask 能够找到相关的资源。

3.4 配置 CORS

  • CORS(app):启用 CORS,允许所有源的跨源请求。如果需要更精细的控制,可以传入参数来指定允许的源、方法等。

3.5 定义路由

  • @app.route('/calculate', methods=['POST']):使用装饰器定义了一个路由,路径为 /calculate,只接受 POST 请求方法。
  • def calculate_sum()::定义了与路由关联的处理函数。这个函数将处理发送到 /calculatePOST 请求。

3.6 处理请求

  • data = request.get_json():从请求中获取 JSON 数据。
  • num1 = data.get('num1')num2 = data.get('num2'):从 JSON 数据中获取 num1num2 的值。
  • if num1 is not None and num2 is not None::检查 num1num2 是否都不为 None。如果是,则进行求和操作并返回结果;否则,返回错误信息和 400 状态码。
  • sum_result = num1 + num2:计算 num1num2 的和。
  • return jsonify({'sum': sum_result}):如果输入有效,返回包含求和结果的 JSON 响应。
  • return jsonify({'error': '无效的输入'}), 400:如果输入无效,返回包含错误信息的 JSON 响应,并带有 400 状态码。

3.7 运行应用

  • if __name__ == '__main__'::确保代码在直接运行脚本时才执行以下代码块。
  • app.run(port=8081):启动 Flask 应用,监听在 8081 端口上。

标签:__,axios,num1,num2,Python,sum,flask,Vue3,data
From: https://www.cnblogs.com/xiins/p/18461856

相关文章

  • python: create object
     classAccount(object):"""账户"""owner:str#类型提示"""类型提示"""balnace:float#类型提示"""类型提示"""def__init__......
  • Python用CNN - LSTM、ARIMA、Prophet股票价格预测的研究与分析|附数据代码
    全文链接: https://tecdat.cn/?p=37860原文出处:拓端数据部落公众号 分析师:SabrinaHuang股票市场的波动起伏一直备受投资者关注,准确预测股票价格对于投资者制定合理的投资策略至关重要。股票价格数据具有时间序列特性,近年来,随着机器学习和深度学习技术的发展,各种模型被应用于......
  • python数据结构学习第一章——栈
    在这片文章中,我们使用python3.8自制一个具有基本功能的栈结构,它的功能只有push,pop,peek这三个功能`#!/usr/bin/envpython#*coding:utf-8*#@Time:2024/9/1519:26#@Author:Huzhaojun#@Version:V1.0#@File:test.py#@desc:#数据结构复习第一章,栈结构的......
  • 数据结构与算法Python版p26-p28 无序表链表实现、有序表
    B站视频-数据结构与算法Python版无序表链表实现、有序表一、节点二、无序表三、有序表一、节点#节点classNode:def__init__(self,initdata):self.data=initdataself.next=NonedefgetData(self):returnself.data......
  • 以Python方式理解Mixin
    通过Python理解Mixin概念-腾讯云开发者社区-腾讯云(tencent.com)Mixin的概念Mixin即Mix-in,常被译为“混入”,是一种编程模式,在Python等面向对象语言中,通常它是实现了某种功能单元的类,用于被其他子类继承,将功能组合到子类中。利用Python的多重继承,子类可以继承不同功......
  • 第108天:免杀对抗-Python&混淆算法&反序列化&打包生成器&Py2exe&Nuitka
    知识点#知识点:1、Python-对执行代码做文章2、Python-对shellcode做文章3、Python-对代码打包器做文章#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll反......
  • 机器学习主成分分析算法 PCA—python详细代码解析(sklearn)
    一、问题背景在进行数据分析时,我们常常会遇到这样的情况:各个特征变量之间存在较多的信息重叠,也就是相关性比较强。就好比在研究一个班级学生的学习情况时,可能会收集到学生的语文成绩、数学成绩、英语成绩等多个特征变量。但往往会发现,语文成绩好的学生,数学和英语成绩也可能比......
  • axios二次封装
    axios二次封装有利于减少代码量,更好的管理api①在src目录下创建api目录。api目录用于存放今后页面不同模块的接口信息。 具体的接口含义如下:②将来要实现的效果如下:importaxiosRequestfrom"./utils/request/http";axiosRequest({path:"product",//使用的api模块......
  • Python字符串格式
    文章目录1.数字与ASCII码转换2.字符串输出格式(%)2.1数字进制与小数表示2.2字符串长度与对齐方式3.字符串输出格式(f'')4.字符串输出格式(format)5.转义字符(换行、Tab)6.字符串查找统计替换等1.数字与ASCII码转换将ASCII码转化为数字或者将数字转化为ASCII码时,......
  • 【零基础学Python】项目实战:使用Django框架搭建私人博客第(二)天 —— 注册、登录功能实
    一、前言通过上次的学习我们已经顺利的搭建了一个私人博客框架,接下来我们开始写页面。本章节代码打包上传,资源下载链接:注意:本系列文章旨在使小白在尽可能短的时间内利用Django搭建一个较为完整的项目,因此页面功能将会非常简单,美工==几乎没有,见谅。二、创建应用1.创建accou......