超详细!小白入门PythonWeb开发详解!

1. 引言

学完了 Python 入门的上中篇内容,接下来是使用场景最为广泛的 Web 开发知识。

随着近年来,互联网技术的飞速发展,再加上移动端应用的突飞猛进,可以说真正让程序开发站在时代的风口,在飞速前行。

程序开发从应用产品的角度上,一般可分为以下两种。

1.1 桌面应用程序开发

这是一种比较基本的传统的软件开发方式,是基于 C/S(Client-Server)架构模式的软件体系。

最开始,互联网还没有那么广泛时,基本都是 Client-Server 架构,即每个互联网应用都是一个软件包。我们比较熟悉的有 PhotoShop、QQ 等桌面程序。

它们使用到的开发语言有 C、C++、Java、C# 等,在桌面应用程序开发过程中,我们常常需要考虑的是语言的跨平台性以及软件的多平台支持,比如常见的操作平台 Windows、Linux、MacOS。我们开发一款桌面应用软件,一般需要考虑对这几类操作系统的支持。

1.2 web应用程序开发

后来,由于应用程序的更新升级非常迅速,3 天一小版本,5 天一大版本,频繁升级,让用户很不开心。因此,软件开发者就开始想办法,不然这么玩下去应用得凉,于是如今很流行的 BS(Browser/Server)架构上场了。

BS 架构最核心的点在于,应用程序还是部署在服务器上,但是访问它们只需要浏览器的 Web 页面来请求就可以了。这让用户们纷纷鼓掌欢迎,毕竟,电脑/手机装不了太多应用软件,但装个浏览器还是 So easy 的,何况在访问网页时还不需要频繁的升级软件。

一个 Web 互联网产品中,基本上会分为 web UI 设计、Web 后端开发以及 Web 前端/小程序端开发。其中 Web 前端开发主要是页面开发,如今成熟的互联网产品都是前后端分离,至于前后端融合开发的产品开发者(又叫全栈开发)不是没有,而是在大型的互联网产品中相对比较少见。

像小❤以前做传统软件的开发时,就用到了 Java+Spring+JSP+HTML 进行全栈开发,不过那都是过去了,目前 All in 后端开发也挺好的。毕竟咱打工人的觉悟就是:俺是一块砖,哪里需要往哪搬~

现在,你应该已经了解 Web 开发的重要性了,Python 作为一门解释型脚本语言,开发效率很高,所以非常适合用来做 Web 后端开发。

知道了我们现在流行的网络通信模式是 Web 通信(即 BS 架构),现在我们来了解一下 Web 通信的原理。

2. Web后端开发

2.1 web通信机制

学过计算机网络的都知道(没学过也不要紧),浏览器和服务器的交互是通过 HTTP 网络协议来进行通信的。当我们在网页上输入一个网址,或者点击一个链接时,一个 HTTP 请求就从你的浏览器发送到了目标服务器。

这个是浏览器通过 HTTPs(= HTTP+数据加密+身份认证+完整性保护)协议访问服务器的过程,如图我们不难看出,所谓上网其实就是对网络资源的请求。

这个请求包括一个标识所需资源的唯一 URL,可以理解为网址,但在服务器中它是一个定义资源的唯一路径。

比如 www.baidu.com 对应的百度公司的服务器中,可能映射了一个唯一的网络进程,当你在百度搜索框里输出要查询的内容时,请求就通过网络传输到了一台服务器上,服务器上的 Web 应用处理完请求后,就回复给浏览器一个 HTTP 响应信息。这个响应信息里面就包括了请求的状态(是否成功),请求的内容等。

随后,浏览器通过响应的内容,渲染出我们看到的搜索完成的页面,一次 HTTP(或 HTTPs)请求就结束了。

2.2 Python进行Web开发

说了这么多,那我们作为开发者,如何在服务器上部署自己的应用为用户提供网络服务呢?

别着急,Python 为我们提供了规范的接口,只需要实现一个标准的 HTTP 处理函数即可。首先,我们在电脑中随便选取一个目录,编写 hello.py 文件:

def application(env, start_resp):
   start_resp('200 OK', [('Content-Type', 'text/html')])
   return [b'<h1>Hello, Python Web</h1>']

然后在同一个目录下,再编写一个 server.py 文件,来启动服务器:

# 从wsgiref模块导入make_server包
from wsgiref.simple_server import make_server
# 导入我们自己编写的application函数
from hello import application

# 创建一个服务器,IP地址为空,端口是8000,处理函数是application
httpd = make_server('', 8000, application)
print('Serving HTTP on port 8000...')
# 监听HTTP请求
httpd.serve_forever()

这时候,我们通过 cmd 进入命令行,在刚才的文件目录下执行 python server.py,就启动好我们自己的服务器了:

当命令行打印 Serving HTTP on port 8000... 就代表服务启动成功了,如果启动失败,我们需要检查一下 8000 端口是否被其他程序占用,或者在 server.py 里面换一个端口再启动。

随后,我们打开任意浏览器,在地址栏输入 127.0.0.1:8000,就可以看到如下页面:

此时,属于我们自己的 BS 架构就完成搭建成功了,是不是很简单!

3. Python框架对比

上面我们已经实现了一个最简单的服务器,但是离真正上线可用还有一段距离,因为我们的 Web 应用最终的目标是给用户提供服务,而提供服务就必须要接收用户的实时请求,根据请求的内容回复不同的资源。

那么我们如何高效处理用户入参,并快速响应资源呢?

3.1 Web框架,提升开发效率的工具

答案是 Web 框架,它可以用来帮助我们提升效率,节省时间,避免处理一些底层的细节。目前业界做 Web 开发,99.9% 的程序员会选用合适 Web 框架助力。

简单来说,如果我们用 Python 开发 Web 应用,所有的代码都得自己手动敲,1000 行的代码用了 Web 框架后,可能只需要 100 行。

3.2 常见的Web框架

在 Python 领域,开发 Web 应用最主流的框架是 FastAPI、Django 和 Flask,它们都非常优秀。

尤其是 FastAPI,是用于构建 Web API 的现代、开源、快速、高性能的 Web 框架,它基于Python 3.6+ 标准类型提示,支持异步,正如它的名字,FastAPI 就是为构建快速的 API 而生。

Django 生态很丰富,但是模块较重,用起来相对比较笨重;而 Flask 简单易用,但是对开发人员的要求比较高,否则 Web 应用的代码容易引起安全漏洞。

基于三者的特定对比,我们接下来选择最年轻且性能较高的 FastAPI 来入门。

4. FastAPI应用

4.1 什么是FastAPI?

FastAPI 中文参考文档:fastapi.tiangolo.com/zh/

FastAPI 是 Python 开发的一个开源 Web 框架,几乎包括了 Web 应用的所有内容,可用于快速搭建高性能、优雅的网站应用。最主要的是,FastAPI 提供了 Web 开发经常使用到的模块,包括自动生成接口文档等,使开发者能够专注业务部分。

4.2 使用FastAPI搭建我们的Web应用

首先,我们安装 fastapi 的三方包:

pip install fastapi uvicorn

编写一个 main.py 文件:

from fastapi import FastAPI
#创建一个FastAPI实例,一般用app做实例名,后续运行时会用到这个名称
app = FastAPI()
# 创建一个路径操作,当为"/"时,可以直接访问服务器,如127.0.0.1:8000
# 如果路径为 “/hello",则需要在路径加上,如127.0.0.1:8000/hello
# 在HTTP协议中,一般用特定的方法执行不同的任务,比如get、post、put、delete
@app.get("/")
def hello():
   # 接口返回内容,这里可以是一个dict,或者是str、int,甚至是一个list
   return {"Hello":"world"}

然后在命令行进入该文件目录,运行:

uvicorn main:app --reload

其中,uvicorn 代表通过该命令启动文件,main 指代 main.py 文件,app 指在 main.py 里面通过 app = FastAPI() 创建了 app 对象,--reload 让服务器在更新代码后重新启动,仅在调试时使用该选项:

可以看到,运行成功了,自动监听本地的 8000 端口。

于是我们打开浏览器,访问 127.0.0.1:8000,出现以下页面:

不难看出,用 FastAPI 启动的 Web 服务器,代码更为简洁。同时,FastAPI 还可以自动根据接口参数自动生成Swagger文档,只需访问 127.0.0.1:8000/docs

这样,我们第一个用 FastAPI 启动的服务器就成功运行起来了,不难看出这比手敲代码方便很多。

4.3 框架常见能力

接口入参

如果我们想要在接口添加入参,可以在路径定义变量:

from fastapi import FastAPI

app = FastAPI()

@app.get("/books/{book_id}")
def read_book():
   return {"book_id":book_id}

我们将以上内容保存在 main.py 文件中时,由于之前启动加了 --reload 参数,服务会重新启动:

此时,我们在浏览器中访问地址 http://127.0.0.1:8000/books/123

可以看到,接口入参已经被接收,并返回给浏览器了。

除此之外,FastAPI 还很方便地支持 Body 传参,顺序传参,默认传参等能力。可以说,Web 开发上,FastAPI 已经帮我们做到了即拿即用,我们只需要调用它封装好的模块包就可以了。

Body请求体

除了在接口路径获取参数以外,FastAPI 给我们提供的三方包里面还可以友好支持获取「请求体」参数。

编写 main.py 文件:

from fastapi import FastAPI
from pydantic import BaseModel
# 新增一个书籍Book的数据结构,继承自BaseModel类
class Book(BaseModel):
   name: str
   desp: str
   price: float

app = FastAPI()
# 定义一个post接口,接收一本书的信息
@app.post("/books/")
async def create_book(book: Book):
   return book

当我们启动服务器时,127.0.0.1:8000/books 接口就会接收请求体作为 JSON 读取,然后转换为对应的数据结构。注意,我们传入的 JSON 需要和定义保持一致,比如:

{
   "name":100,
   "desp":"一本书",
   "price":88
}

其中,name 为 str 类型,但是我们传了 100 是整型,所以接口会报错。

同时,在开发过程中,我们可以随时打开 Swagger 文档【127.0.0.1:8000/docs】,查看接口定义:

这样,我们在传入参数时,可以先参考接口文档,防止数据结构或字段格式出错。

5. 小结

到这期为止,Python 入门篇内容就全部结束了。

我们先是从 Python 的语言特性,基本数据类型到 Python 常用操作,到本期内容的 Web 开发,相信一起走完的同学可以开始上手工作了。

后面,我们会结合 Python 语言的数据处理能力,一起和大家学一些 GitHub 上的高 Star 项目。比如股票处理,游戏开发,还有其它和 AI 大模型相关的应用。

敬请期待!

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上时代呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python Web开发入门到精通是一本介绍如何使用Python进行Web开发的书籍。它包含了从基础的Python语法和Web开发概念到高级的Web框架和数据库操作等内容。通过学习这本书,读者可以掌握Python Web开发的基本技能和实践经验,从而能够独立完成Web应用的开发和部署。 ### 回答2: Python Web开发是一个非常重要且流行的领域,越来越多的开发人员想要掌握这一技术。Python Web开发大致可以分为三个阶段,从入门到精通需要系统化的学习和实践,下面将逐一介绍。 第一阶段:基础介绍 首先需要了解Python Web框架的基础概念、工具和技术。Flask、Django、Tornado是较为常见的Python Web框架,学习其中一种即可。同时需要学习基础的HTML、CSS和JavaScript,及HTTP协议和数据库等技术。可以使用W3School等在线教程加深理解。 第二阶段:实践 掌握基础知识后,需要找一个可行的项目动手实践。可以从一个简单的需求开始,慢慢加入更多的功能,例如一个博客网站或在线商城。在实践中还应该注意代码组织和规范,清晰易懂的注释和文档也是非常重要的。 第三阶段:优化和提高 在实践中,我们会遇到一些挑战,如性能问题、安全性等。这时,需要使用一些工具进行分析和改进,例如性能分析工具和安全测试工具等。还可以学习高级技术,如WSGI和返回JSON等,用来提高Web应用程序的功能和性能。 最后,Python Web开发是一个大的学科,不断更新和发展。掌握基础知识后,应该继续学习新的技能和知识,不断提高自己。通过开发不同的项目和探索多种工具,逐渐实现Web开发入门到精通。 ### 回答3: Python是一种广泛使用的编程语言,它在Web应用程序方面表现出色。Python Web开发可以帮助您构建高效,强大且易于维护的Web应用程序。本文将从入门到精通级别介绍Python Web开发入门级别: 首先,您需要了解Python语言的基础知识和一些基本概念。学习Python的最佳方法是通过阅读相关的书籍和在线教程。完成Python入门级别后,您可以使用Python内置的Web框架(如Flask或Django)创建简单的Web应用程序。 在这个阶段,您只需要了解基本的路由,视图,数据库以及Python的模板引擎等基础知识。 了解Web开发的基础知识,您可以使用HTML,CSS和JavaScript来构建Web应用程序的前端界面。 中级水平: 在Python Web开发的中级阶段,您需要更深入地了解Web开发的常用组件,如ORM,Authentication和Websockets等。您还需要学习如何编写测试,以确保您的应用程序能够稳定运行。此外,您还需要深入了解Python Web框架,并学会如何自定义路由,中间件和视图。在这个阶段,您还可以学习许多其他Python Web框架,如Tornado,FastAPI等。 高级水平: 在Python Web开发的高级阶段,您已经完全掌握了Web开发的基本知识,并且可以使用不同的开发模式和工具来创建灵活,高效和高质量的Web应用程序。在这个阶段,您可以向Github等开源社区提交代码,并将您的开发经验分享给其他开发人员。您可以创建高效的Web应用程序,使用Redis在您的Web应用程序中实现高速缓存,使用Elasticsearch来搜索您的网站内容,等等。您还可以了解如何使用各种技术来构建分布式数据库。 了解高级水平的Python Web开发需要您具有足够的实践经验和对各种组件的深入理解。 综上所述,Python Web开发入门至精通需要您学习基本知识并进行深入实践。始终记住,Web开发不是一天能够掌握的,需要长时间的实践和学习。文章只是为您提供了一个大体方向,如果您想要精通Python Web开发,您需要在此基础上继续深入学习和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值