Python Flask框架从零基础入门到精通,实现web后端开发

Python Flask框架

一、简介


Flask是一个基于Python的Web开发框架,它以灵活、微框架著称,Flask本身不具备太多功能,但是通过丰富的第三方插件,可以轻松地应对现实开发中复杂的需求。

学习Flask框架,我们可以开发一个服务器,与前端进行交互

Flask有3个主要依赖:路由、调试和Web服务器网关接口(WSGI,Web server gateway interface)子系统由Werkzeug提供;模板系统由Jinja2提供;命令行集成由Click提供。这些依赖全都是Flask的开发者Armin Ronacher开发的。

二、学习资源推荐

Flask文档

wandertp

三、环境搭建

1.python环境

读者可以先查看下计算机中现有的Python版本,按照系统来分,可以用以下方式查看:

  • Windows系统:按Win+R快捷键,输入cmd,按Enter键,在打开的命令行终端输入python,即可看到现有的Python版本,如图所示。

wandertp
从图可以看到Windows系统安装的Python版本是3.10.2,读者可以查看下自己的计算机上安装的Python版本,建议最好安装python3.6以上的版本。

可以到官网:https://www.python.org/下载最新版本的Python,下载后直接安装即可。

  • Mac系统:打开终端,输入python3,然后按Enter键即可查看

2.安装Flask库

安装Flask 非常简单,只要在系统的终端软件中输入以下命令,然后按Enter键即可安装。

    $ pip install flask

3.开发软件


许多软件都可以用来开发Flask项目,如Sublime Text、Visual Studio Code等,但是最专业的软件还是PyCharm。PyCharm是一个集成开发环境(integrated development environment,简称IDE),它提供了许多方便快捷的功能,如断点调试、版本控制等

PyCharm是JetBrains公司出品的一款专门针对Python编程的软件,它有两大版本:一个是PyCharm Professional,即专业版;另一个是PyCharm Community,即社区版,这两大版本的主要区别如下。

  • PyCharm Professional:功能最全,适合开发任何类型的Python程序,包括做一些前端项目开发,但是需要收费。
  • PyCharm Community:适合开发爬虫、数据分析、GUI等纯Python程序。对Python Web(如Flask和Django等)开发不够友好,没有足够的代码提示。好处是开源免费。

我们需要开发Flask项目,所以选择PyCharm Professional版本。关于它的收费问题,如果读者是学生,可以用学校提供的教育邮箱账号(一般以edu.cn结尾)去申请免费授权(申请网址: https://www.jetbrains.com/community/education/#students)。

如果读者是企业开发者,可以跟公司申请购买正版授权。如果您既不是学生又不想购买正版PyCharm Professional版本,则可以退而求其次选择PyCharm Community版本,也完全可以学习本书的内容,只是一些代码提示没有那么智能(PyCharm Professional有30天试用期)。

四、应用的基本结构

1.初始化

所有Flask应用都必须创建一个应用实例。Web服务器使用一种名为Web服务器网关接口(WSGI,Web server gateway interface,读作“wiz-ghee”)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是Flask类的对象

	from flask import Flask
	app = Flask(__name__)

Flask类的构造函数只有一个必须指定的参数,即应用主模块或包的名称。在大多数应用中,Python的__name__变量就是所需的值。

Flask用_name_参数确定应用的位置,进而找到应用中其他文件的位置,例如图像和模板

2.路由与视图函数

客户端(例如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask应用实例。应用实例需要知道对每个URL的请求要运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序称为路由

在Flask应用中定义路由的最简便方式,是使用应用实例提供的app.route装饰器。下面的例子说明了如何使用这个装饰器声明路由:

	@app.route('/')
	def index():
	    return 'Hello World!'

装饰器是Python语言的标准特性。惯常用法是把函数注册为事件处理程序,在特定事件发生时调用。

index()这样处理入站请求的函数称为视图函数。如果应用部署在域名为www.example.com的服务器上,在浏览器中访问http://www.example.com后,会触发服务器执行index()函数。这个函数的返回值称为响应,是客户端接收到的内容。如果客户端是Web浏览器,响应就是显示给用户查看的文档。视图函数返回的响应可以是包含HTML的简单字符串。

3.一个完整的应用

	from flask import Flask
	app = Flask(__name__)
	
	@app.route('/')
	def index():
	    return '<h1>Hello World!</h1>'

4.定义URL

绝大部分网站都不可能只有首页一个页面,以一个最简单的博客网站为例,博客页面相关的有博客列表、博客详情等,用户页面相关的有注册、登录、个人中心等。

所以在制作网站时,需要定义许多不同的URL来满足不同页面的访问需求,而URL总体上来讲又分为两种,第一种是无参数的URL,第二种是有参数的URL,下面分别进行讲解这两种URL的定义。

定义无参数的URL

无参数URL是指在URL定义的过程中,不需要定义参数。这里以个人中心为例,如定义个人中心的URL为/profile,可以使用以下代码实现。

	@app.route('/profile')
	def profile():
		return '这是个人中心'

定义有参数的URL

有些时候,在访问某个URL时需要携带一些参数。如获取博客详情时,需要把博客的id传过去,那么博客详情的URL可能为/blog/13,其中13为博客的id。假如获取第10页的博客列表,那么博客列表的URL可能为/blog/list/10,其中10为页码。

在Flask中,如果URL中携带了参数,那么视图函数也必须定义相应的形参来接收URL中的参数。这里以博客详情的URL为例,示例代码如下:

    @app.route("/blog/<blog_id>")
    def blog_detail(blog_id):
       return "您查找的博客id为:"%blog_id

通过以上代码可以看到,URL中多了一对尖括号,并且尖括号中多了一个blog_id,这个blog_id就是参数。然后在视图函数blog_detail中,也相应定义了一个blog_id的形参,当浏览器访问这个URL时,Flask接收到请求后,会自动解析URL中的参数blog_id,把它传给视图函数blog_detail,在视图函数中,开发者就可以根据blog_id从数据库中查找到具体的博客数据返回给浏览器。

URL中的参数类型
wandertp
这里着重讲解参数类型any的使用。例如,现在要实现一个获取某个分类的博客列表,但是博客分类只能是python、flask、django之一,用any就可以轻松实现。

    @app.route("/blog/list/<any(python,flask,django):category>"<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值