【全栈入门】一文看懂前端、后端与数据库是怎么“串门”的?
【全栈入门】一文看懂前端、后端与数据库是怎么“串门”的附 Flask 轻量实战源码摘要对于刚接触 Web 开发的新手来说“全栈”听起来像是一个高深莫测的词汇。页面上的按钮点击后数据是怎么飞到服务器又怎么存进数据库的今天我们将告别枯燥的理论用一个最接地气的“餐厅营业”模型把前端、后端和数据库的交互逻辑扒得干干净净并附上一套极简的实战代码带你从零跑通你的第一个全栈项目一、 角色大揭秘谁在干什么想象我们正在经营一家非常现代化的数字餐厅一个完整的 Web 应用同样由三个核心部门组成1. 前端Frontend餐厅的门面与大堂前端是用户直接用眼睛看到、用鼠标点到的地方比如网页的 HTML5 结构、精美的 CSS 样式以及负责交互的 JavaScript。职责负责给客人用户展示精美的菜单收集客人的点单需求并把做好的菜品端给客人。特性重视觉、重交互。如果前端做得好客人点菜时的体验就像在玩丝滑的互动小游戏一样。2. 后端Backend餐厅的后厨后端是隐藏在幕后的核心处理中心常见的有 Python、Java、Node.js 等。职责接收前端传来的“点菜单”开始疯狂运转。它要核对账单、验证权限客人有没有付钱然后按照菜谱的逻辑进行烹饪。特性重逻辑、重安全。它是整个系统的业务大脑。3. 数据库Database餐厅的地下冷库数据库是专门用来安全、持久地存放数据的地方如 SQLite、MySQL 等。职责冷库里不仅存着各种食材用户数据、文章内容还存着账本密码、消费记录。后厨需要什么就去冷库拿做好的成品如果需要保存也放回冷库。二、 核心桥梁它们之间怎么“串门”这三个部门不是各干各的它们需要一个极其高效的沟通机制。1. 沟通方式API 接口服务员前端和后端之间通过API应用程序编程接口进行对话。最常见的协议是 HTTP。当前端想要数据时就会发起一个GETPOST请求服务员给我拿一份菜单想要提交数据时就会发起一个 请求服务员这是我的点单请交给后厨。2. 沟通语言JSON国际通用语前端是用 JS 写的后端可能是用 Python 写的语言不通怎么办大家约定好用JSON格式来交流。它看起来就像一个非常清爽的键值对字典JSON{user_name: 景天,action: login,status: success}一键获取完整项目代码3. 后端与数据库SQL冷库管理员指令后端想要去冷库拿东西不能随便乱翻必须对数据库说专门的指令语言也就是SQL。比如SELECT * FROM users意思就是“把所有用户的数据都拿出来给我”。三、 实战演练写一个极简的“用户信息系统”百闻不如一见下面我们用最简单、轻量级的技术组合HTML5 Python Flask SQLite来模拟一次完整的“串门”过程。第一步配置数据库建冷库我们需要在本地初始化一个数据库用来存放信息。# init_db.pyimport sqlite3# 连接到 SQLite 数据库如果文件不存在会自动创建conn sqlite3.connect(app_data.db)cursor conn.cursor()# 创建一个非常简单的用户表cursor.execute(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,role TEXT NOT NULL))# 塞入两条测试数据cursor.execute(INSERT INTO users (name, role) VALUES (张三, 管理员))cursor.execute(INSERT INTO users (name, role) VALUES (李四, 普通用户))conn.commit()conn.close()print(数据库初始化完成)一键获取完整项目代码运行这段代码后你的项目目录下就会多出一个app_data.db文件。第二步编写后端 API开后厨我们用 Flask 这个轻量级 Python 框架来搭建后端它非常适合用来快速开发原型或处理轻量级任务。# app.pyfrom flask import Flask, jsonify, render_templateimport sqlite3app Flask(__name__)def get_db_connection():conn sqlite3.connect(app_data.db)# 让查询结果像字典一样可以通过列名访问conn.row_factory sqlite3.Rowreturn conn# 这是一个 API 接口前端访问这个地址就能拿到 JSON 数据app.route(/api/users, methods[GET])def get_users():conn get_db_connection()# 后端用 SQL 语句向数据库要数据users conn.execute(SELECT * FROM users).fetchall()conn.close()# 把从数据库拿到的原始数据组装成干净的 JSON 列表发给前端user_list [{id: row[id], name: row[name], role: row[role]} for row in users]return jsonify(user_list)if __name__ __main__:app.run(debugTrue, port5000)一键获取完整项目代码第三步编写前端页面布置大堂我们用 HTML5 原生的fetch方法去调用后端的 API拿到数据后动态渲染到网页上。HTML!DOCTYPE htmlhtml langzhheadmeta charsetUTF-8title全栈数据展示/title/headbodyh1人员名单面板/h1ul iduser-listli正在努力加载后厨数据.../li/ulscript// 前端通过 fetch 主动呼叫后端的 APIfetch(http://127.0.0.1:5000/api/users).then(response response.json()) // 收到后端传来的 JSON 数据.then(data {const listElement document.getElementById(user-list);listElement.innerHTML ; // 清空加载提示// 遍历数据渲染到页面上data.forEach(user {const li document.createElement(li);li.textContent 编号: ${user.id} | 姓名: ${user.name} | 身份: ${user.role};listElement.appendChild(li);});}).catch(error console.error(出错了, error));/script/body/html一键获取完整项目代码当你启动 Flask 后端并打开这个 HTML 文件时原本写死在代码里的文字瞬间被替换成了数据库里的真实数据。恭喜你你已经跑通了 Web 开发中最核心的链路四、 新手避坑指南干货警告在第一次联调前后端时你大概率会遇到以下几个让人抓狂的坑CORS 跨域报错前端的端口比如 8080和后端的端口比如 5000不一样浏览器出于安全保护会拦截请求。在开发阶段可以在 Flask 中引入flask_cors库来一键解决。SQL 注入攻击千万不要直接把前端传过来的字符串用加号拼接到 SQL 语句里永远使用参数化查询比如execute(SELECT * FROM users WHERE name?, (username,))否则别人输入一段恶意代码你的数据库就直接被删库跑路了。数据类型不匹配前端 框收集到的数字传到后端通常变成了字符串类型。在存入数据库前记得在后端做一次强类型转换如inputint()。结语前后端的交互本质上就是一次次“请求”与“响应”的往复。一旦你理解了这段数据流动的轨迹无论是做大型企业系统、个人工具还是给复杂的游戏开发后端记分板核心思路都是一模一样的。

相关新闻

澜驰软件解析:外贸购物网站制作核心要点及商用建站优势

澜驰软件解析:外贸购物网站制作核心要点及商用建站优势

外贸独立站是企业开拓海外市场、打造国际品牌、自主承接跨境订单的核心渠道。如今越来越多外贸工厂、跨境企业、进出口商家放弃第三方平台入驻模式,选择自主搭建专属外贸购物网站,摆脱平台佣金限制与流量捆绑。但外贸建站和普通国内电商建站差异极大&…

2026/8/6 18:03:45 阅读更多 →
为什么93%的AI店招被顾客忽略?:基于2.8万张门店招牌眼动实验的数据真相

为什么93%的AI店招被顾客忽略?:基于2.8万张门店招牌眼动实验的数据真相

更多请点击: https://codechina.net 第一章:为什么93%的AI店招被顾客忽略?:基于2.8万张门店招牌眼动实验的数据真相 在覆盖全国17个城市的2.8万次真实街景眼动追踪实验中,研究团队发现:当行人经过AI生成店…

2026/8/6 18:03:45 阅读更多 →
Mac Setup:一小时搞定Mac全自动配置的终极指南

Mac Setup:一小时搞定Mac全自动配置的终极指南

Mac Setup:一小时搞定Mac全自动配置的终极指南 【免费下载链接】mac-setup 项目地址: https://gitcode.com/gh_mirrors/mac/mac-setup 厌倦了每次重装系统后繁琐的手动配置过程?Mac Setup项目为你提供了一站式解决方案,让你在一小时内…

2026/8/6 18:03:45 阅读更多 →

最新新闻

Linux系统下Vivado安装部署全攻略:从依赖配置到环境优化

Linux系统下Vivado安装部署全攻略:从依赖配置到环境优化

1. 项目概述:为什么在Linux上部署Vivado是硬件工程师的“必修课”如果你是一名FPGA开发者,或者正在踏入数字电路设计的领域,那么Xilinx(现AMD)的Vivado设计套件对你来说,就像厨师的刀、画家的笔一样&#x…

2026/8/6 18:51:06 阅读更多 →
Python环境配置常用命令conda

Python环境配置常用命令conda

pip安装&#xff1a;pip install <package>卸载&#xff1a;pip uninstall查看torch:pip show torch创建conda环境&#xff1a;conda create --name new_env指定python:conda create --name new_env python3.8查看conda环境&#xff1a;conda env list 或者conda info --…

2026/8/6 18:51:06 阅读更多 →
解决Ubuntu安装Anaconda后conda命令找不到的完整指南

解决Ubuntu安装Anaconda后conda命令找不到的完整指南

1. 问题概述&#xff1a;为什么安装后找不到命令&#xff1f;在Ubuntu上安装Anaconda&#xff0c;然后兴冲冲地打开终端准备大干一场&#xff0c;结果输入conda命令&#xff0c;却只换来一句冰冷的conda: command not found&#xff0c;这感觉就像你配好了钥匙&#xff0c;却发…

2026/8/6 18:51:06 阅读更多 →
题解:洛谷 P1035 [NOIP 2002 普及组] 级数求和

题解:洛谷 P1035 [NOIP 2002 普及组] 级数求和

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

2026/8/6 18:51:06 阅读更多 →
二三类医疗器械注册全周期流程,生产企业该如何合规推进

二三类医疗器械注册全周期流程,生产企业该如何合规推进

二三类医疗器械属于中高风险品类&#xff0c;监管要求严格&#xff0c;注册流程复杂且周期长&#xff0c;不少生产企业在推进过程中容易因为资料准备不充分、节点把控不到位延误项目。以下整理了从前期筹备到最终拿证的完整可落地流程&#xff0c;帮生产企业理清合规路径。注册…

2026/8/6 18:51:06 阅读更多 →
3个关键步骤:如何在4MB ESP32设备上实现AI语音交互

3个关键步骤:如何在4MB ESP32设备上实现AI语音交互

3个关键步骤&#xff1a;如何在4MB ESP32设备上实现AI语音交互 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 你是否曾梦想为低成本ESP32设备赋予智能语音能力&…

2026/8/6 18:50:05 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述&#xff1a;为什么我们需要深入LimboAI的C内核&#xff1f;如果你是一名使用Godot引擎的游戏开发者&#xff0c;尤其是对AI行为逻辑有较高要求的项目&#xff0c;那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好&#xff0c;我是老张&#xff0c;一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架&#xff0c;处理了角色移动和碰撞&#xff0c;这一期&#xff0c;我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延&#xff0c;无需电控启动&#xff0c;是建筑被动消防系统核心构件&#xff0c;行业依托新规管控、城市更新、工业安全升级迎来稳定扩容&#xff0c;整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →