当前位置: 首页 > article >正文

Python从入门到精通day51

前后端分离开发入门DjangoVue.js 实战前后端分离是现代 Web 开发的主流模式核心是将页面渲染、交互逻辑前端与数据处理、业务逻辑后端解耦通过标准化的 API 接口实现数据交互。本文以 Django后端 Vue.js前端为例详解前后端分离开发的核心流程、优势及实战技巧。一、前后端分离核心概念1. 传统开发 vs 分离开发模式核心特点弊端 / 优势传统开发后端渲染页面Django 模板前后端代码耦合弊端开发效率低、代码维护难、不支持多终端分离开发后端仅提供数据接口JSON前端负责渲染优势并行开发、代码解耦、支持多终端PC / 移动端、易扩展微服务架构2. 前后端分离的核心优势1.提升开发效率前后端约定接口后可并行开发无需等待对方完成需求变更时只要接口格式不变后端无需修改代码。2.增强可维护性前后端代码解耦维护时互不影响避免 “牵一发而动全身”。3.适配多终端同一套后端接口可支撑 PC、移动端、小程序等多终端降低开发成本。4.便于服务化架构后端接口可通过 HTTP (S) 调用易扩展为微服务架构。接下来我们就用前后端分离的方式来改写之前的投票应用。二、Django 后端实现 JSON 数据接口后端核心职责是提供标准化的 JSON 格式数据接口无需关注页面渲染专注于数据处理和业务逻辑。1. 基础实现手动序列化对象为 JSON以 “获取学科列表” 为例手动将模型对象转换为字典再通过JsonResponse返回 JSON 数据def show_subjects(request): queryset Subject.objects.all() subjects [] for subject in queryset: subjects.append({ no: subject.no, name: subject.name, intro: subject.intro, isHot: subject.is_hot }) return JsonResponse(subjects, safeFalse)2. 优化实现使用 bpmappers 简化对象序列化手动转换对象为字典效率低、易出错可使用bpmappers库支持 Django 模型快速实现对象→字典的映射。步骤 1安装依赖pip install bpmappers步骤 2编写模型映射器Mapperfrom bpmappers.djangomodel import ModelMapper from poll2.models import Subject class SubjectMapper(ModelMapper): class Meta: model Subject步骤 3优化视图函数def show_subjects(request): queryset Subject.objects.all() subjects [] for subject in queryset: subjects.append(SubjectMapper(subject).as_dict()) return JsonResponse(subjects, safeFalse)步骤 4配置 URL 映射urlpatterns [ path(api/subjects/, show_subjects), ]然后访问该接口可以得到如下所示的JSON格式数据。[ { no: 1, name: Python全栈人工智能, intro: Python是一种计算机程序设计语言。是一种面向对象的动态类型语言最初被设计用于编写自动化脚本(shell)随着版本的不断更新和语言新功能的添加越来越多被用于独立的、大型项目的开发。, is_hot: true }, // 此处省略下面的内容 ]如果不希望在JSON数据中显示学科的成立时间我们可以在映射器中排除create_date属性如果希望将是否为热门学科对应的键取名为isHot默认的名字是is_hot也可以通过修改映射器来做到。具体的做法如下所示from bpmappers import RawField from bpmappers.djangomodel import ModelMapper from poll2.models import Subject class SubjectMapper(ModelMapper): isHot RawField(is_hot) class Meta: model Subject exclude (is_hot, )再次查看学科接口返回的JSON数据。[ { no: 101, name: Python全栈人工智能, intro: Python是一种计算机程序设计语言。是一种面向对象的动态类型语言最初被设计用于编写自动化脚本(shell)随着版本的不断更新和语言新功能的添加越来越多被用于独立的、大型项目的开发。, isHot: true }, // 此处省略下面的内容 ]关于bpmappers详细的使用指南请参考它的官方文档这个官方文档是用日语书写的可以使用浏览器的翻译功能将它翻译成你熟悉的语言即可。三、Vue.js 前端渲染页面数据接下来我们通过前端框架Vue.js来实现页面的渲染。如果希望全面的了解和学习Vue.js建议阅读它的官方教程或者在YouTube上搜索Vue.js的新手教程Vue.js Crash Course进行学习。重新改写subjects.html页面使用Vue.js来渲染页面。!DOCTYPE html html langen head meta charsetUTF-8 title学科信息/title style /* 此处省略层叠样式表 */ /style /head body div idcontainer h1扣丁学堂所有学科/h1 hr div idmain dl v-forsubject in subjects dt a :href/static/html/teachers.html?sno subject.no {{ subject.name }} /a img v-ifsubject.is_hot src/static/images/hot-icon-small.png /dt dd{{ subject.intro }}/dd /dl /div /div script srchttps://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js/script script let app new Vue({ el: #main, data: { subjects: [] }, created() { fetch(/api/subjects/) .then(resp resp.json()) .then(json { this.subjects json }) } }) /script /body /html前后端分离的开发需要将前端页面作为静态资源进行部署项目实际上线的时候我们会对整个Web应用进行动静分离静态资源通过Nginx或Apache服务器进行部署生成动态内容的Python程序部署在uWSGI或者Gunicorn服务器上对动态内容的请求由Nginx或Apache路由到uWSGI或Gunicorn服务器上。在开发阶段我们通常会使用Django自带的测试服务器如果要尝试前后端分离可以先将静态页面放在之前创建的放静态资源的目录下具体的做法可以参考项目完整代码。总结1. 前后端分离的核心是后端提供 JSON 接口、前端负责渲染通过bpmappers可简化 Django 模型到 JSON 的序列化2. Vue.js 通过fetch调用后端接口利用v-for/v-if等指令实现数据驱动的页面渲染3. 开发阶段需注意跨域问题django-cors-headers生产环境建议动静分离部署NginxuWSGI。AI神器,助力学习,工作国内直接使用顶级AI工具谷歌浏览器访问https://www.nezhasoft.cloud/r/vMPJZr

相关文章:

Python从入门到精通day51

前后端分离开发入门:DjangoVue.js 实战 前后端分离是现代 Web 开发的主流模式,核心是将页面渲染、交互逻辑(前端)与数据处理、业务逻辑(后端)解耦,通过标准化的 API 接口实现数据交互。本文以 …...

Spring Boot 3.x 与 MyBatis-Plus 兼容问题笔记

Spring Boot 3.x 与 MyBatis-Plus 兼容问题笔记 问题场景 Spring Boot 3.2 版本使用 MyBatis-Plus 时,出现 Invalid value type 等类型不匹配/依赖冲突报错,核心原因是 MyBatis-Plus 旧版本与 Spring Boot 3.x 不兼容。解决方案(两种方案二选…...

赣州店铺快装哪家专业

在赣州进行店铺装修,选择一家专业、可靠的服务商是确保项目顺利落地、按时开业的关键。专业的店铺快装服务,不仅能高效完成空间改造,更能通过合理的商业空间规划,为后续经营打下良好基础。专业店铺快装服务的核心要素一家专业的店…...

pl-table:高性能表格组件的虚拟滚动技术实践

pl-table:高性能表格组件的虚拟滚动技术实践 【免费下载链接】pl-table A table based on element, 完美解决万级数据渲染卡顿问题 项目地址: https://gitcode.com/gh_mirrors/pl/pl-table 当你处理10万行订单数据时,传统表格组件是否常出现滚动卡…...

VibeVoice Pro语音基座方案:对接RAG+LLM构建智能语音助手

VibeVoice Pro语音基座方案:对接RAGLLM构建智能语音助手 1. 引言:重新定义实时语音交互 在智能语音助手日益普及的今天,用户对响应速度的要求越来越高。传统的文本转语音技术往往需要等待整个文本生成完毕才能开始播放,这种延迟…...

K230开发板进阶教程:如何优化YOLOv5s模型在nncase上的推理性能

K230开发板实战:深度优化YOLOv5s模型在nncase上的推理性能 如果你已经成功在嘉楠勘智K230开发板上跑通了YOLOv5s模型,恭喜你,这已经迈出了关键一步。但当你真正想把模型部署到实际应用场景,比如智能摄像头、边缘计算盒子或者移动机…...

维普智教技术架构解析:垂直领域大模型如何破解教育AI的“幻觉“难题?

【技术观察】 教育AI的"幻觉"问题(Hallucination)一直是行业痛点。通用大模型在开放域表现优异,但在教育这种强知识约束场景,往往出现事实性错误、知识点偏离等问题。最近,维普推出的中小学智慧教育平台&…...

2026年电钢琴专业深度测评:性价比排名前五品牌权威发布

随着音乐教育普及与居家娱乐需求持续攀升,兼具专业手感、智能功能与合理定价的电钢琴成为市场主流。为帮助消费者在众多产品中做出精准决策,我们基于行业数据、实测体验与用户口碑,对主流品牌进行了一次权威、客观的横向测评。一、测评说明与…...

构建基于DAMOYOLO-S和Agent的自主巡检机器人软件系统

构建基于DAMOYOLO-S和Agent的自主巡检机器人软件系统 你有没有想过,让一个机器人自己就能在工厂车间、变电站或者仓库里转悠,像经验丰富的老师傅一样,检查设备、读取仪表、发现异常?这听起来像是科幻电影里的场景,但现…...

Vue 开发指南:从安装到实战,彻底搞懂自动导入插件

在 Vue 项目开发中&#xff0c;你是否遇到过这样的“灵异现象”&#xff1a; 明明没有写 import 语句&#xff0c;但在模板里直接敲 <el-button> 或 <PageTable />&#xff0c;组件竟然能直接运行&#xff1f;当你想按住 Ctrl 点击查看源码时&#xff0c;编辑器却告…...

(转)JUC系列之《CompletableFuture:Java异步编程的终极武器》

转自&#xff1a; https://developer.aliyun.com/article/1684158 引言一、为什么需要CompletableFuture&#xff1f;二、核心概念&#xff1a;Promise与异步任务三、创建CompletableFuture四、任务链式编排&#xff1a;thenApply、thenAccept、thenRun五、组合多个Future&…...

2026年淮安品牌设计企业口碑大揭秘!这份优秀企业TOP榜单你看过吗?

在淮安&#xff0c;品牌设计行业发展态势良好&#xff0c;众多企业在市场中各展风采。下面为大家揭秘2026年淮安口碑较好的品牌设计企业。行业现状近年来&#xff0c;淮安品牌设计行业发展迅速。行业报告显示&#xff0c;随着淮安经济的不断增长&#xff0c;越来越多的企业开始…...

让前厅更高效,让服务更暖心——HWT2.0酒店话务台,重构宾客体验新范式

在酒店运营的日常里&#xff0c;前厅工作人员常常面临着诸多困扰&#xff1a;会议酒店高峰期话务拥堵&#xff0c;VIP 来电无法及时响应&#xff1b;批量叫醒任务繁重&#xff0c;漏接、错接导致宾客投诉&#xff1b;房态与分机信息不同步&#xff0c;服务响应滞后&#xff1b;…...

探索 36G1 - 改进 critic - TOPSIS 算法及仿真实现

36G1-改进critic-TOPSIS 可进行matlab和python仿真程序通用也可“改进”&#xff0c;在多准则决策分析领域&#xff0c;critic - TOPSIS 是一种颇为有效的方法&#xff0c;今天咱们就来聊聊对它改进的那些事儿&#xff0c;并且看看在 Matlab 和 Python 中怎么实现仿真。 一、改…...

CodeFormer:基于代码本查找Transformer的AI人脸修复技术全解析

CodeFormer&#xff1a;基于代码本查找Transformer的AI人脸修复技术全解析 【免费下载链接】CodeFormer [NeurIPS 2022] Towards Robust Blind Face Restoration with Codebook Lookup Transformer 项目地址: https://gitcode.com/gh_mirrors/co/CodeFormer 技术原理&am…...

RVC模型参数详解与调优指南:如何获得最佳变声效果

RVC模型参数详解与调优指南&#xff1a;如何获得最佳变声效果 你是不是也遇到过这种情况&#xff1a;用RVC模型做变声&#xff0c;出来的声音要么音调怪怪的&#xff0c;像机器人&#xff0c;要么听起来完全不像目标音色&#xff0c;甚至还有杂音。明明跟着教程一步步来的&…...

Qt开源背后的那些秘密

程序员或者开源爱好者&#xff0c;你是不是经常听到“GPL”、“自由软件”、“开源协议”&#xff0c;但其实不太明白它们到底是什么&#xff1f;今天&#xff0c;我们来一次彻底解读&#xff0c;让你秒懂GPL&#xff0c;也顺便了解它和Qt开源许可的关系。GPL到底是什么&#x…...

安装docker后,一段时间后,ssh连不上

昨天还能正常 SSH 连接&#xff0c;今天失败&#x1f6e0;️ 分步排查与修复1. 先恢复网卡与网络在虚拟机内执行以下命令&#xff0c;重新启用网卡并获取 IP&#xff1a;# 启用 ens33 网卡 sudo ip link set ens33 up# 向 DHCP 服务器申请 IP&#xff08;恢复昨天的网络配置&am…...

结构体struct和类class

一、结构体&#xff08;struct&#xff09;C 中的 struct&#xff08;结构体&#xff09;是一种自定义数据类型&#xff0c;核心作用是将不同类型但相关联的数据封装在一起&#xff0c;形成一个整体。它是 C 面向对象编程的基础之一&#xff08;甚至可以看作轻量级的类&#xf…...

告别线束羁绊,重塑工业通讯:南京来可LCWLAN系列CAN转WiFi模块硬核揭秘

产品概述&#xff1a;打破线束羁绊&#xff0c;重塑工业通讯在复杂多变的工业现场与飞速发展的物联网时代&#xff0c;传统有线CAN总线正面临布线困难、移动设备受限以及跨网段数据孤岛等严峻挑战。如何让稳定可靠的CAN数据“飞”上云端&#xff0c;或在移动设备间无缝穿梭&…...

MyBatis Interceptor执行顺序详解(plugin机制、责任链模式)

目录一、引言二、Interceptor的注册顺序2.1 配置文件注册&#xff08;mybatis-config.xml&#xff09;2.2 代码注册2.3 SpringBoot Order2.4 扩展 - PageHelper链最后&#xff08;即最先执行&#xff09;三、plugin机制与InterceptorChain3.1 InterceptorChain.pluginAll3.2 In…...

2026大专电子商务毕业生就业学数据分析的价值分析

电子商务与数据分析的行业趋势近年来电子商务行业数据化转型加速&#xff0c;企业普遍依赖数据分析优化运营、精准营销和供应链管理。2025年《中国电子商务报告》显示&#xff0c;超75%的电商企业将数据分析能力列为核心岗位要求&#xff0c;涵盖用户行为分析、销售预测等场景。…...

“AI+”引爆家电新一轮以旧换新,AWE上看AI家电“百花争艳”

3月12日&#xff0c;以“AI科技&#xff0c;慧享未来”为主题的中国家电及消费电子博览会&#xff08;AWE&#xff09;在上海启幕&#xff0c;长虹携全线AI家电矩阵亮相&#xff0c;从画质革新的RGB-Mini LED新品、AI人感空调、场景化的AI冰洗厨套系&#xff0c;再到AI智慧家居…...

收藏!2026大模型春招真相|200个真实JD拆解,后端/算法转岗必看(小白友好)

本人从后端开发传统算法双赛道转岗大模型&#xff0c;最近趁着金三银四春招&#xff0c;计划冲刺一波大模型相关岗位&#xff0c;但越准备越迷茫——大模型知识点繁杂且更新极快&#xff0c;个人精力有限&#xff0c;始终找不到重点&#xff0c;不知道该把时间花在哪些技能上才…...

Win11家庭版也能用组策略?3步教你手动安装gpedit.msc(附完整CMD代码)

解锁Windows 11家庭版的隐藏管理能力&#xff1a;手动部署组策略编辑器全指南 如果你正在使用Windows 11家庭版&#xff0c;可能早就发现了一个令人困惑的“缺失”——在运行对话框里输入gpedit.msc&#xff0c;系统会告诉你找不到这个文件。这并非你的系统出了问题&#xff0c…...

Blender新手必看:3种超简单模型环绕技巧(附详细步骤图)

Blender新手必看&#xff1a;3种超简单模型环绕技巧&#xff08;附详细步骤图&#xff09; 刚接触Blender&#xff0c;面对空白的3D视窗&#xff0c;是不是既兴奋又有点无从下手&#xff1f;尤其是当你需要让一堆物体&#xff0c;比如柱子、灯泡、甚至是科幻场景中的能量核心&a…...

一灯即千言:无线Andon系统如何重塑服装厂敏捷生产

在传统服装制造车间&#xff0c;问题的发现与解决往往依赖班组的巡视与工人的主动汇报&#xff0c;信息流如同穿梭的线头&#xff0c;容易纠缠、迟滞。一个微小的断针、一道色差的缝线、一次设备的异常停顿&#xff0c;都可能因为信息传递的“时间差”而演变为整批货品的延误。…...

Canoe中panel面板关联系统变量

背景&#xff1a;在SystemVariables中加了变量&#xff0c;但在Panel设计面板中未找到变量&#xff0c;be like 如下实际原因&#xff1a;在Environment中SystemVariables中新增数据后&#xff0c;未重新保存退出&#xff0c;导致此原因...

ChatGLM-6B多语言扩展:实现中英混合对话

ChatGLM-6B多语言扩展&#xff1a;实现中英混合对话 1. 引言 ChatGLM-6B作为一款优秀的开源对话模型&#xff0c;原生支持中英双语能力&#xff0c;但在实际使用中&#xff0c;很多开发者发现模型在处理中英混合对话时表现不够理想。比如当你问"帮我写一段Python代码实现…...

清研电子荣获维科杯·OFweek 2025年度动力电池材料创新技术奖

2026 年 3 月 12 日&#xff0c;维科杯・OFweek 2025锂电行业年度评选颁奖典礼在香港亚洲国际博览馆隆重举办。近 300 个参评项目历经专家评审、网络投票、行业编辑三轮严苛筛选&#xff0c;清研电子凭借动力电池材料领域“技术颠覆 产业落地 生态赋能” 的全方位优势&#x…...