Fastapi前端搭建
1. 配置import { defineConfig } from vite import vue from vitejs/plugin-vue import { resolve } from path export default defineConfig({ plugins: [vue()], resolve: { alias: { : resolve(__dirname, src) } }, server: { proxy: { /api: { target: http://127.0.0.1:8000, changeOrigin: true, } } } })Vue 前端配置在/api路径下配置代理将请求转发到后端地址 http://127.0.0.1:8000/api/changeOrigin: true修改请求头中的Origin为目标地址避免后端因 Origin 校验拒绝请求。2. 接口格式// 加载图书列表 1. 在挂载时加载 // const loadBook () { // axios.get(/api/book/?page${query.value.page}page_size${query.value.page_size}) // .then(res { // console.log(后端返回, res.data) // tableData.value res.data.data // totalNum.value res.data.count_total // }) // .catch(err console.error(err)) // }1. 方法一axios.get(调用路径/?分页参数 查询条件).then请求成功后触发.then中的回调函数。.catch请求失败后触发。相当于一个 if-else 判断如果成功执行成功逻辑如果失败则提示错误。2. 方法二// 加载图书列表 2. 在事件中加载 const loadBook () { axios.get(/api/book/, {params: query.value}) .then(res { console.log(res.data) tableData.value res.data.data totalNum.value res.data.count_total }) .catch(err console.error(err)) }在事件中加载时将参数放在请求体{params: query.value}中params中传递数据不在路由中传递。3. 添加、编辑接口!-- 新增、编辑共用弹窗 -- el-dialog v-modeldialogVisible title图书表单 width520px el-form label-width90px el-form-item label书名 el-input v-modelform.name/el-input /el-form-item el-form-item label价格 el-input v-model.numberform.price/el-input /el-form-item el-form-item label库存数量 el-input v-model.numberform.numbers/el-input /el-form-item !-- 分类下拉选择 -- el-form-item label分类 el-select v-modelform.category_id placeholder请选择分类 stylewidth: 100% el-option label文学小说 value1 / el-option label计算机编程 value2 / el-option label历史人文 value3 / el-option label心理学 value4 / el-option label美食菜谱 value5 / /el-select /el-form-item /el-form template #footer el-button clickdialogVisible false取消/el-button el-button typeprimary clicksubmitForm确定提交/el-button /template /el-dialog组件定义弹窗变量dialogVisible false默认未打开点击后打开并显示数据绑定form中的空数据。如果输入数据就将输入的数据放到form中对应的字段中。添加接口、编辑接口const submitForm () { if (operateMode.value add) { // 新增 axios.post(/api/book/, form.value) .then(() { ElMessage.success(新增成功) dialogVisible.value false loadBook() }) .catch(err { ElMessage.error(新增失败) console.error(err) }) } else { // 编辑 axios.put(/api/book/${editBookId.value}, form.value) .then(() { ElMessage.success(修改成功) dialogVisible.value false loadBook() }) .catch(err { ElMessage.error(修改失败) console.error(err) }) } }因为编辑和添加功能在一起需要先判断当前窗口是添加还是编辑然后调用对应的接口。将请求体发送到后端form中是添加的数据传到后端后添加到 MySQL 数据库中。添加或编辑成功后将dialogVisible.value false关闭窗口。修改时只传递修改后的数据然后传到后端接口进行修改。

相关新闻

Android崩溃排查:如何关联Firebase报告与Logcat日志进行深度分析

Android崩溃排查:如何关联Firebase报告与Logcat日志进行深度分析

1. 项目概述:为什么Logcat是Firebase崩溃分析的“现场勘查报告”做Android开发,最头疼的莫过于线上崩溃。用户反馈一句“App闪退了”,你这边可能毫无头绪。Firebase Crashlytics(现在已整合进Firebase Crash Reporting&#xff09…

2026/7/29 5:26:21 阅读更多 →
科技创新的国际EMBA选择指南,企业家择校参考

科技创新的国际EMBA选择指南,企业家择校参考

一、前言:企业家如何选对科技创新的国际EMBA当下传统管理模式难以适配数字化、全球化商业变革,民营企业家、企业创始人择校时,普遍面临课程同质化、科创属性薄弱、国际化资源不足、圈层匹配度低等问题。本文从全球办学排名、院校办学定位、课…

2026/7/29 5:26:21 阅读更多 →
C++质数判断算法:从暴力法到6k±1优化的高效实现

C++质数判断算法:从暴力法到6k±1优化的高效实现

1. 项目概述:为什么“极简版”质数判断值得深究?在C编程的入门和进阶路上,判断一个数是否为质数,几乎是一个绕不开的经典练习。你可能在教科书、在线教程或者面试题里见过它无数次。乍一看,这题目简单得有些“幼稚”—…

2026/7/29 5:26:21 阅读更多 →

最新新闻

CTF隐写术与密码爆破实战指南

CTF隐写术与密码爆破实战指南

1. CTF隐写术入门:当密码遇上暴力破解刚接触CTF比赛时,最让我头疼的就是各种隐写术题目。那些看似普通的图片、音频、压缩包里,往往藏着关键的flag信息。今天我们就来拆解一个典型场景——当你发现文件被加密,而题目提示"你只…

2026/7/29 5:34:24 阅读更多 →
C/C++实现梅森素数判定:从卢卡斯-莱默检验到大整数运算优化

C/C++实现梅森素数判定:从卢卡斯-莱默检验到大整数运算优化

1. 项目概述:从“完美数”到现代密码学的数学瑰宝如果你对C/C编程和算法感兴趣,并且曾经好奇过那些动辄数百万位的超大素数是如何被发现的,那么“梅森数”绝对是一个绕不开的迷人话题。它不像排序、查找那样直接解决日常问题,却像…

2026/7/29 5:34:24 阅读更多 →
考研复试面试技巧与核心要点解析

考研复试面试技巧与核心要点解析

1. 考研复试面试的本质与核心逻辑考研复试面试本质上是一场结构化的人才评估活动,考官通过20-30分钟的互动对话,系统考察考生的专业素养、科研潜力、心理素质和应变能力。与初试的标准化考试不同,面试更注重"人"的全面评估&#xf…

2026/7/29 5:34:24 阅读更多 →
从最大流算法到项目任务分配:Edmonds-Karp实战与建模思维

从最大流算法到项目任务分配:Edmonds-Karp实战与建模思维

1. 项目概述:从“水流”到“价值流”的算法实战最近在整理算法实验的笔记,翻到了当年在深大做的那个关于最大流的应用实验,感觉挺有代表性的。很多同学学算法,尤其是像最大流、最小割这类图论里的经典问题,总觉得离实际…

2026/7/29 5:34:24 阅读更多 →
C++ Stack push函数深度解析:从原理到实战的完整指南

C++ Stack push函数深度解析:从原理到实战的完整指南

1. 项目概述:从“push”一词说起在C的世界里,Stack(栈)是一个基础但至关重要的数据结构,它完美地体现了“后进先出”(LIFO)的原则。而push函数,就是这个栈的“入口”,是数…

2026/7/29 5:34:24 阅读更多 →
C++ std::set 核心原理与实战应用:从红黑树到高效数据管理

C++ std::set 核心原理与实战应用:从红黑树到高效数据管理

1. 项目概述:为什么我们需要std::set?在C的日常开发中,尤其是在处理需要快速查找、自动去重和有序遍历的数据集合时,std::set是一个绕不开的容器。我第一次在项目中大规模使用它,是在做一个游戏服务器的排行榜系统。当…

2026/7/29 5:33:24 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻