
人工智能
文章平均质量分 93
程序员老孙
技术宅
展开
-
精通Python(83)
大家可以试一试,不同的模型预测结果是否存在较大的差异,哪个是你心目中最理想的模型,然后大家可以通过实验验证我们之前提到的一个观点,看看特征工程是不是对预测的结果有重要的影响。从上面的统计图表可以看出,一等舱的乘客有更高的存活率,女性乘客相较于男性乘客也有更高的存活率,在瑟堡登船的用户存活率较其他两地更高。对于我们加载的数据集,我们可以将年龄字段的缺失值处理为中位数,将登船港口的缺失值处理为众数,客舱号字段的缺失值比较多,一种处理方式是直接删除这个列,另一种处理方式是二值化,有客舱号的记为。原创 2025-04-18 06:00:00 · 1654 阅读 · 0 评论 -
精通Python(82)
从传统的基于规则、基于统计的方法到深度学习和 Transformer 架构,研究人员一直没有停下对 NLP 探索的脚本,即便经历了人工智能的几次寒冬。随着 GPT 和 BERT 的出现,再到今天各种大模型在不同领域得到广泛应用,计算机已经能够理解和生成几乎所有语言的精髓并顺利的通过“图灵测试”。这一切不仅改变了我们与机器的互动方式,更为信息的获取、理解和交流开辟了崭新的天地,语言的力量永不止步!原创 2025-04-17 06:30:00 · 1000 阅读 · 0 评论 -
精通Python(81)
神经网络模型使用了与传统机器学习算法不同的方式从海量数据中学习知识,尽管模型缺乏可解释性,但不能否认它在图像、语音和自然语言处理等多个领域已经取得了显著的成绩。当然,训练神经网络模型需要消耗大量的资源,在应用神经网络模型时建议权衡其优缺点,并根据具体的任务需求选择合适的模型和训练方法。对于那些数据量较小、需要可解释性或计算资源有限的场景,我们建议考虑使用传统的机器学习算法或者其他更轻量级的模型。原创 2025-04-16 06:00:00 · 835 阅读 · 0 评论 -
精通Python(80)
集成学习通过结合多个模型来减少模型的偏差和方差,通常能获得比单一模型更好的预测效果。由于集成学习通常结合多个基础模型,它能够有效降低单一模型可能存在的过拟合问题,也能够处理异常数据和噪声数据,比单一模型更加稳定。当然,集成学习也存在计算开销大、模型可解释性差、超参数调优复杂等问题。除了 XGBoost 和 LightGBM 之外,还有一个因处理类别特征而闻名的 Boosting 算法叫做 CatBoost,三者都是 GBDT 系列算法的佼佼者。原创 2025-04-15 06:30:00 · 565 阅读 · 0 评论 -
精通Python(79)
K-Means 是一种经典的聚类算法,它的优点包括实现简单,算法收敛速度快;缺点是结果不稳定(跟初始值设定有关系),无法解决样本不均衡的问题,容易收敛到局部最优解,受噪声数据影响较大。如果你想通过可视化的方式理解聚类的过程,我们给大家推荐一个名为 Naftali 的人的博客,该网站上提供了可视化的方式展示 K-Means 和 DBSCAN 聚类(一种基于密度的聚类算法),如下图所示。原创 2025-04-14 07:00:00 · 1616 阅读 · 0 评论 -
精通Python(78)
之前介绍的鸢尾花数据集并不适合讲解回归模型,为此我们引入另一个经典的汽车 MPG 数据集。汽车 MPG 数据集最初由美国汽车协会提供,我们可以通过该数据集预测车辆的燃油效率,即每加仑燃料行驶的里程(Miles Per Gallon, MPG)。需要注意的是,scikit-learn 库没有内置该数据集,我们可以直接从UCI 机器学习仓库网站下载数据集,也可以通过执行下面的代码联网加载该数据集。原创 2025-04-13 06:00:00 · 588 阅读 · 0 评论 -
精通Python(77)
文本分类:如垃圾邮件检测、情感分析等。推荐系统:根据用户行为和喜好进行个性化推荐。医药诊断:根据症状预测疾病。原创 2025-04-12 09:47:17 · 1015 阅读 · 0 评论 -
精通Python(76)
随机森林是基于决策树的集成学习算法,所谓集成学习就是通过组合多个模型的预测结果来提高整体模型的性能,其核心思想就是多个模型的组合往往比单个模型更有效,通过不同的模型捕捉到数据的不同特征,从而降低模型的过拟合风险(提升模型的泛化能力)。随机森林通过构建多个决策树并将它们的预测结果进行投票(分类)或平均(回归),来提高模型的准确性和鲁棒性,如下图所示。Bootstrap 抽样:从原始训练数据集中随机抽取若干个样本(有放回抽样),形成多个不同的子集,每个子集用于训练一棵决策树。原创 2025-04-10 08:15:00 · 1618 阅读 · 0 评论 -
精通Python(75)
接下来为大家隆重介绍一下我们后续会使用到的一个重要的数据集——鸢尾花数据集(iris dataset)。鸢尾花数据集是机器学习领域中最著名、最经典的数据集之一,由植物学家在加拿大魁北克加斯帕半岛采集,由英国统计学家于 1936 年在他的论文*《The Use of Multiple Measurements in Taxonomic Problems》*中首次引入,被广泛用于机器学习算法的入门和实验。原创 2025-04-09 05:15:00 · 1522 阅读 · 0 评论 -
精通Python(74)
人类通过记忆和归纳这两种方式进行学习,通过记忆可以积累单个事实,使用归纳可以从旧的事实推导出新的事实。机器学习是赋予机器从数据中学习知识的能力,这个过程并不需要人类的帮助(给出明确的规则),也就是说机器学习关注的是从数据中学习一种模式(pattern),即便数据本身存在问题(噪声),这也是机器学习算法和传统算法最根本的区别。传统的算法需要计算机被告知如何从复杂系统中找到答案,算法利用计算机的运算能力去寻找最佳结果。原创 2025-04-08 06:30:00 · 781 阅读 · 0 评论 -
精通Python(73)
运行结果如下所示,其中 total_bill 表示账单总金额,tip 表示小费的金额,sex 是顾客的性别,smoker 表示顾客是否抽样,day 代表星期几,time 代表是午餐还是晚餐,size 是就餐人数。值得一提的是,下图中的标题、图例、右侧的工具箱都是可以点击的,大家可以点击它们看看会有什么样的效果,ECharts 的魅力就在于它的交互效果,大家一定要试一试。的左侧导航栏中找到“图表类型”选项,下面每种类型的图表都有对应的官方示例,很多代码是可以直接使用的,我们需要做的就是将数据换成自己的数据。原创 2025-04-07 06:00:00 · 933 阅读 · 0 评论 -
精通Python(72)
在绘制雷达图时,需要让折线闭合,简单的说就是首尾相连,下面是绘制雷达图的代码。由于半径和面积的关系是平方的关系,南丁格尔玫瑰图会将数据的比例大小夸大,尤其适合对比大小相近的数值,同时由于圆形有周期的特性,所以南丁格尔玫瑰图也适用于表示一个周期内的时间概念,比如星期、月份。面积图又叫堆叠折线图,是在折线图的基础上,对折线以下的区域进行颜色填充(展示面积),用于在连续间隔或时间跨度上展示数值,一般用来显示趋势和对比数值,不同颜色的填充可以让多个面积块之间的对比和趋势更好的突显。原创 2025-04-06 06:30:00 · 754 阅读 · 0 评论 -
精通Python(71)
使用 matplotlib,我们还可以绘制出其他的统计图表(如:雷达图、玫瑰图、热力图等),但实际工作中,使用频率最高的几类图表我们在上面已经为大家完整的展示出来了。在完成了对数据的透视之后,我们可以将数据透视的结果通过可视化的方式呈现出来,简单的说,就是将数据变成漂亮的统计图表,因为人类对颜色和形状会更加敏感,然后再进一步解读数据背后隐藏的商业价值。在统计学中,直方图是一种展示数据分布情况的图形,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。函数,并指定横轴和纵轴的数据。原创 2025-04-05 06:15:00 · 605 阅读 · 0 评论 -
精通Python(70)
类型的索引,那么你就很有可能要对数据进行时间序列分析,关于时间序列分析的方法和模型并不是本章节要探讨的内容,我们在其他的专栏中为大家分享。方法基于时间对数据进行重采样,相当于根据时间周期对数据进行了分组操作,分组之后还可以进行聚合统计,代码如下所示。方法指定一个时间频率来实现对数据的抽样,我们仍然以之前讲过的百度股票数据为例,给大家做一个演示。的方法,可以给索引指定一个顺序,分组聚合的结果会按照这个指定的顺序进行呈现,代码如下所示。三个参数即可,分别表示作为索引的数据、索引的数据类型和索引的名称。原创 2025-04-04 06:00:00 · 1601 阅读 · 0 评论 -
精通Python(69)
斯皮尔曼秩相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的等级数据,或者是由连续变量转化成等级的数据,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。简单的说,协方差的正负号显示着两个变量的相关性。其实很多时候,连续值也可以通过分箱的方式处理成离散的等级或类别,然后使用斯皮尔曼秩相关系数或卡方检验的方式来判定相关性。协方差的数值大小取决于变量的大小,通常是不容易解释的,但是正态形式的协方差可以显示两变量线性关系的强弱。原创 2025-04-03 06:00:00 · 898 阅读 · 0 评论 -
精通Python(68)
例如,我们要“统计每个销售区域的销售总额”,那么“销售区域”就是我们的 A 列,而“销售额”就是我们的 B 列,在。上面的例子中,“统计每个销售区域每个月的销售总额”会产生一个看起来很长的结果,在实际工作中我们通常把那些行很多列很少的表成为“窄表”,如果我们不想得到这样的一个“窄表”,可以使用。一图胜千言,我们对数据进行透视的结果,最终要通过图表的方式呈现出来,因为图表具有极强的表现力,能够让我们迅速的解读数据中隐藏的价值。,但也是一个长长的“窄表”,如果希望做成一个行比较少列比较多的“宽表”,可以将。原创 2025-04-02 06:00:00 · 921 阅读 · 0 评论 -
精通Python(67)
实际工作中,有些异常值可能是由系统或人为原因造成的,但有些异常值却不是,它们能够重复且稳定的出现,属于正常的极端值,例如很多游戏产品中头部玩家的数据往往都是离群的极端值。当然,由于企业的信息化水平以及数据中台建设水平的差异,我们拿到的数据未必是质量很好的,可能还需要对数据中的缺失值、重复值、异常值进行适当的处理。离散化也叫分箱,如果变量的取值是连续值,那么它的取值有无数种可能,在进行数据分组的时候就会非常的不方便,这个时候将连续变量离散化就显得非常重要。在正态分布下,距离平均值3σ之外的值出现的概率为。原创 2025-04-01 06:00:00 · 961 阅读 · 0 评论 -
精通Python(66)
假设有名为“2022年股票数据.xlsx”的 Excel 文件,里面有用股票代码命名的五个表单,分别是阿里巴巴(BABA)、百度(BIDU)、京东(JD)、亚马逊(AMZN)、甲骨文(ORCL)这五个公司2022年的股票数据,如果想加载亚马逊的股票数据,代码如下所示。如果要将该员工的职位修改为“架构师”,可以使用下面的代码。方法的参数是一个字符串,它代表了筛选数据使用的表达式,而且更符合 Python 程序员的使用习惯。的某一行,可以使用整数索引或我们设置的索引,例如取出员工编号为。原创 2025-03-31 06:00:00 · 1208 阅读 · 0 评论 -
精通Python(65)
方法非常重要,它们可以通过字典或者指定的函数来处理数据,把数据映射或转换成我们想要的样子。都提供了大量的处理数据的方法,数据分析师以此为基础,可以实现对数据的筛选、合并、拼接、清洗、预处理、聚合、透视和可视化等各种操作。对象因为内部维护了一个保存索引的数组,所以除了可以使用整数索引检索数据外,还可以通过自己设置的索引(标签)获取对应的数据。类型的内部结构包含了两个数组,其中一个用来保存数据,另一个用来保存数据的索引。对象中找出元素中最大或最小的“Top-N”,我们不需要对所有的值进行排序的,可以使用。原创 2025-03-30 06:00:00 · 1010 阅读 · 0 评论 -
精通Python(64)
向量(vector)也叫矢量,是一个同时具有大小和方向,且满足平行四边形法则的几何对象。与向量相对的概念叫标量或数量,标量只有大小,绝大多数情况下没有方向。我们通常用带箭头的线段来表示向量,在平面直角坐标系中的向量如下图所示。需要注意的是,向量是表达大小和方向的量,并没有规定起点和终点,所以相同的向量可以画在任意位置,例如下图中 w\small{\boldsymbol{w}}w 和 u\small{\boldsymbol{u}}u 两个向量并没有什么区别。向量有很多种代数表示法,对于二维空间的向量,下面几种原创 2025-03-29 09:58:13 · 350 阅读 · 0 评论 -
精通Python(63)
函数的第一个参数设置了两个条件,满足第一个条件的元素执行了乘以10的操作,满足第二个条件的元素执行了求平方的操作,两个条件都不能满足的数组元素会被处理为0。属性)是完全相同的,我们再来研究一下,两个形状不同的数组是否可以直接做二元运算或使用通用二元函数进行运算,请看下面的例子。NumPy 的数组跟数组也可以执行算术运算和关系运算,运算会作用于两个数组对应的元素上,这就要求两个数组的形状(函数的第一个参数给出了条件,满足条件的元素执行了乘以10的操作,不能满足条件的元素执行了求平方的操作。原创 2025-03-24 09:35:57 · 374 阅读 · 0 评论 -
精通Python(62)
all()any()方法:判断数组是否所有元素都是True/ 判断数组是否有为True的元素。astype()方法:拷贝数组,并将数组中的元素转换为指定的类型。reshape()方法:调整数组对象的形状。dump()方法:保存数组到二进制文件中,可以通过 NumPy 中的load()函数从保存的文件中加载数据创建数组。array3tofile()方法:将数组对象写入文件中。fill()方法:向数组中填充指定的元素。flatten()方法:将多维数组扁平化为一维数组。nonzero()原创 2025-03-23 11:14:46 · 931 阅读 · 0 评论 -
精通Python(61)
关于索引运算需要说明的是,切片索引虽然创建了新的数组对象,但是新数组和原数组共享了数组中的数据,简单的说,无论你通过新数组对象或原数组对象修改数组中的数据,修改的其实是内存中的同一块数据。花式索引和布尔索引也会创建新的数组对象,而且新数组复制了原数组的元素,新数组和原数组并不是共享数据的关系,这一点可以查看数组对象的。在存取数据的时候,数据与数据的地址都是连续的,这确保了可以进行高效率的批量操作,性能上远远优于 Python 中的。布尔索引就是通过保存布尔值的数组充当一个数组的索引,布尔值为。原创 2025-03-19 06:30:00 · 1430 阅读 · 0 评论 -
精通Python(60)
因为对于新手来说,先安装官方的 Python 解释器,再逐个安装工作中会使用到的三方库文件会比较麻烦,尤其是在 Windows 环境下,经常会因为构建工具或 DLL 文件的缺失导致安装失败,而一般新手也很难根据错误提示信息采取正确的解决措施,容易产生严重的挫败感。安装过程基本使用默认设置即可,完成安装后,macOS 用户可以在“应用程序”或“启动台”中找到名为“Anaconda-Navigator”的应用程序,运行该程序可以看到如下所示的界面,我们可以在这里选择需要执行的操作。原创 2025-03-18 06:00:00 · 815 阅读 · 0 评论 -
精通Python(59)
当今世界,各行各业对信息技术的依赖程度在不断加深,每天都会有大量的数据产生,我们常常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。这里所说的信息,可以理解为对数据集处理之后的结果,是从数据集中提炼出的可用于支撑和指导决策的东西,而从原始数据中抽取出有价值的信息的这个过程我们就称之为数据分析,它是数据科学的重要组成部分。定义1:数据分析是有针对性的收集、加工、整理数据并采用统计、挖掘等技术对数据进行探索、分析、呈现和解释的科学。定义2。原创 2025-03-17 06:00:00 · 563 阅读 · 0 评论 -
精通Python(58)
当你写了很多个爬虫程序之后,你会发现每次写爬虫程序时,都需要将页面获取、页面解析、爬虫调度、异常处理、反爬应对这些代码从头至尾实现一遍,这里面有很多工作其实都是简单乏味的重复劳动。那么,有没有什么办法可以提升我们编写爬虫代码的效率呢?答案是肯定的,那就是利用爬虫框架,而在所有的爬虫框架中,Scrapy 应该是最流行、最强大的框架。Scrapy 是基于 Python 的一个非常流行的网络爬虫框架,可以用来抓取 Web 站点并从页面中提取结构化的数据。原创 2025-03-16 06:00:00 · 1223 阅读 · 0 评论 -
精通Python(57)
Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的行为,最终帮助爬虫开发者获取到网页的动态内容。简单的说,只要我们在浏览器窗口中能够看到的内容,都可以使用 Selenium 获取到,对于那些使用了 JavaScript 动态渲染技术的网站,Selenium 会是一个重要的选择。下面,我们还是以 Chrome 浏览器为例,来讲解 Selenium 的用法,大家需要先安装 Chrome 浏览器并下载它的驱动。Chrome 浏览器的驱动程序可以在ChromeDriver官网。原创 2025-03-15 06:00:00 · 1555 阅读 · 0 评论 -
精通Python(56)
通过上面三段代码执行结果的比较,我们可以得出一个结论,使用多线程和异步 I/O 都可以改善爬虫程序的性能,因为我们不用将时间浪费在因 I/O 操作造成的等待和阻塞上,而time命令的执行结果也告诉我们,单线程的代码 CPU 利用率仅仅只有12%,而多线程版本的 CPU 利用率则高达95%;单线程版本的爬虫执行时间约21秒,而多线程和异步 I/O 的版本仅执行了3秒钟。原创 2025-03-14 06:30:00 · 1501 阅读 · 0 评论 -
精通Python(55)
通过前面的课程,我们已经知道了可以通过多线程的方式为爬虫提速,使用多线程的本质就是,当一个线程阻塞的时候,程序还有其他的线程可以继续运转,因此整个程序就不会在阻塞和等待中浪费了大量的时间。前面我们说过,异步编程是一种“协作式并发”,即通过多个子程序相互协作的方式提升 CPU 的利用率,从而减少程序在阻塞和等待中浪费的时间,最终达到并发的效果。,看看不使用异步 I/O 也不使用多线程,到底和上面的代码有什么区别,相信通过这样的对比,大家能够更深刻的理解我们之前强调的几个概念:同步和异步,阻塞和非阻塞。原创 2025-03-13 09:25:39 · 908 阅读 · 0 评论 -
精通Python (4)
本章节讲述 循环结构。原创 2025-01-05 07:45:00 · 2068 阅读 · 0 评论 -
精通Python(51)
Python 语言能做的事情真的很多,就网络数据采集这一项而言,Python 几乎是一枝独秀的,大量的企业和个人都在使用 Python 从网络上获取自己需要的数据,这可能也是你将来日常工作的一部分。另外,用编写正则表达式的方式从网页中提取内容虽然可行,但是写出一个能够满足需求的正则表达式本身也不是件容易的事情,这一点对于新手来说尤为明显。在下一节课中,我们将会为大家介绍另外两种从页面中提取数据的方法,虽然从性能上来讲,它们可能不如正则表达式,但是却降低了编码的复杂性,相信大家会喜欢上它们的。原创 2025-03-02 07:00:00 · 1910 阅读 · 0 评论 -
精通Python(54)
在 Python 中,我们还可以通过subprocess模块的call函数执行其他的命令来创建子进程,相当于就是在我们的程序中调用其他程序,这里我们暂不探讨这些知识,有兴趣的读者可以自行研究。程序需要维护许多共享的状态(尤其是可变状态),Python 中的列表、字典、集合都是线程安全的(多个线程同时操作同一个列表、字典或集合,不会引发错误和数据问题),所以使用线程而不是进程维护共享状态的代价相对较小。程序会花费大量时间在 I/O 操作上,没有太多并行计算的需求且不需占用太多的内存。原创 2025-03-05 07:00:00 · 903 阅读 · 0 评论 -
精通Python(53)
除了上面的代码展示的创建线程的方式外,还可以通过继承Thread类并重写run()方法的方式来自定义线程,具体的代码如下所示。print(f'开始下载 {self.filename}.')print(f'{self.filename} 下载完成.')print(f'下载耗时: {end - start:.3f}秒.')DownloadThread('Python从入门到住院.pdf'),DownloadThread('MySQL从删库到跑路.avi'),原创 2025-03-04 07:00:00 · 991 阅读 · 0 评论 -
精通Python(52)
下面我们对三种解析方式做一个简单比较。解析方式对应的模块速度使用难度正则表达式解析re快困难XPath 解析lxml快一般CSS 选择器解析bs4或pyquery不确定简单。原创 2025-03-03 07:00:00 · 610 阅读 · 0 评论 -
精通Python(50)
爬虫(crawler)也经常被称为网络蜘蛛(spider),是按照一定的规则自动浏览网站并获取所需信息的机器人程序(自动化脚本代码),被广泛的应用于互联网搜索引擎和数据采集。使用过互联网和浏览器的人都知道,网页中除了供用户阅读的文字信息之外,还包含一些超链接,网络爬虫正是通过网页中的超链接信息,不断获得网络上其它页面的地址,然后持续的进行数据采集。正因如此,网络数据采集的过程就像一个爬虫或者蜘蛛在网络上漫游,所以才被形象的称为爬虫或者网络蜘蛛。原创 2025-03-01 07:00:00 · 903 阅读 · 0 评论 -
精通Python(49)
国内外比较有名的云存储服务(如:亚马逊的S3、阿里的OSS2等)一般都物美价廉,相比自己架设静态资源服务器,云存储的代价更小,而且一般的云存储平台都提供了CDN服务,用于加速对静态资源的访问,所以不管从哪个角度出发,使用云存储的方式管理Web应用的数据和静态资源都是非常好的选择,除非这些资源涉及到个人或商业隐私,否则就可以托管到云存储中。例如,我们的Web项目中需要做个人或企业的实名认证,很显然我们并没有能力判断用户提供的认证信息的真实性,这个时候我们就要借助三方平台提供的服务来完成该项操作。原创 2025-02-28 07:00:00 · 882 阅读 · 0 评论 -
精通Python(48)
比较常见的解决缓存击穿的办法是使用互斥锁,简单的说就是在缓存失效的时候,不是立即去数据库加载数据,而是先设置互斥锁(例如:Redis中的setnx),只有设置互斥锁的操作成功的请求,才能执行查询从数据库中加载数据并写入缓存,其他设置互斥锁失败的请求,可以先执行一个短暂的休眠,然后尝试重新从缓存中获取数据,如果缓存还没有数据,则重复刚才的设置互斥锁的操作,大致的参考代码如下所示。当然,先更新数据库再删除缓存的做法在理论上也存在风险,但是发生问题的概率是极低的,所以不少的项目都使用了这种方式。原创 2025-02-27 21:21:08 · 904 阅读 · 0 评论 -
精通Python(47)
使用CBV创建数据接口的特点是代码简单,开发效率高,但是没有FBV(基于函数的视图)灵活,因为使用FBV的方式,数据接口对应的视图函数执行什么样的代码以及返回什么的数据是高度可定制的。大多数获取资源列表的操作都支持数据分页展示,也就说我们可以通过指定页码(或类似于页码的标识)和页面大小(一次加载多少条数据)来获取不同的数据。的类,从名字上就可以看出,该类是只读视图的集合,也就意味着,继承该类定制的数据接口只能支持GET请求,也就是获取单个资源和资源列表的请求。,然后将注册成功后生成的URL一并添加到。原创 2025-02-26 07:00:00 · 743 阅读 · 0 评论 -
精通Python(46)
REST这个词,是在他2000年的博士论文中提出的,Roy是HTTP协议(1.0和1.1版)的主要设计者、Apache服务器软件主要作者、Apache基金会第一任主席。在他的博士论文中,Roy把他对互联网软件的架构原则定名为REST,即REStateTransfer的缩写,中文通常翻译为“表现层状态转移”或“表述状态转移这里的“表现层”其实指的是“资源”的“表现层”。所谓资源,就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲或一种服务。原创 2025-02-25 07:00:00 · 738 阅读 · 0 评论 -
精通Python(45)
所谓前后端分离的开发,就是前后端工程师约定好数据交互接口,并行的进行开发和测试,后端只提供数据,不负责将数据渲染到页面上,前端通过HTTP请求获取数据并负责将数据渲染到页面上,这个工作是交给浏览器中的JavaScript代码来完成。刚才说过,在前后端分离的开发模式下,后端需要为前端提供数据接口,这些接口通常返回JSON格式的数据。为此我们可以使用一个名为。在开发阶段,我们通常会使用Django自带的测试服务器,如果要尝试前后端分离,可以先将静态页面放在之前创建的放静态资源的目录下,具体的做法可以参考。原创 2025-02-24 07:00:00 · 869 阅读 · 0 评论