Python作为一种简洁、强大的编程语言,为Web网站和Web应用程序开发提供了丰富的工具和框架。Python中常用的Web框架有Django、Flask、FastAPI和Tornado等。这些框架提供了一套工具和结构,用于简化开发过程,并提供了许多功能,如路由、模板引擎、ORM(对象关系映射)、数据库访问、安全性等,使得开发者能够更快速地构建和部署Web网站和Web应用程序。
1、什么是web框架?
网络应用框架(Web application framework),简称:Web框架,是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发。大多数的web框架提供了一套开发和部署网站的方式。这些框架通常包括一套预定义的方法和工具,用于构建和运行web应用程序。web框架可以简化开发过程,通过提供一些基本的功能和组件,使得开发者可以更加专注于实现应用程序的核心功能,而不是从头开始编写所有必要的代码,极大地简化了Web应用程序的开发、测试和部署过程,使得开发者能够更加高效地创建出功能丰富、性能优良的Web应用。此外,Web框架还提供了许多内置的功能,如用户认证、会话管理、数据库访问等,这些功能可以大大加速开发过程,同时确保应用程序的安全性和性能。
Python作为一种流行的编程语言,拥有许多优秀的Web开发框架,其中两个最受欢迎的框架是Flask和Django。
Flask框架是一个轻量级的可定制框架,注重简洁性、灵活性和可扩展性,比其它同类型框架更为灵活、轻便、安全且容易上手,适合Python初学者或小型项目。它可以很好地结合MVC模式进行开发,允许开发人员进行分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能的同时实现更丰富的扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
Django框架是一个开源且强大的Web框架,适用于快速开发和部署Python Web应用程序。它注重快速开发和开箱即用的特性,提供了丰富的工具和库来简化常见的开发任务,包括ORM(对象关系映射)、认证系统、管理后台、表单处理等,并具有高度的可扩展性和灵活性。使用Django框架可以帮助开发人员提高工作效率,减少开发时间和错误,同时提供安全性和稳定性的保障。
Flask和Django是两个流行的Python Web框架,Flask注重简洁和灵活性,提供了基础功能,允许开发者按需选择插件和扩展。Django则提供了全功能的开发套件,包含了许多预置功能,但也带来了更多的复杂性。Flask适合小型项目、API开发或对组件自由度有较高要求的项目,而Django更适合大型项目、内容管理系统或需要快速构建具备管理后台的应用程序。
2、使用Flask框架创建Web网站
Flask是目前十分流行的web框架,被称为微框架(microframework),微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。
(1)安装Flask库
要使用Flask框架创建一个Web网站,首先需要安装Flask库。可以通过终端运行以下pip命令来安装Flask库:
pip install flask
如果你使用的是Pyhint编辑器,可以点击Pyhint编辑器上面的“打开终端”按钮,在弹出的黑色cmd终端窗口中,输入“pip install flask”然后按下Enter回车键即可安装Flask库,如果运行结果出现“Successfully installed”,说明已经安装成功。如图:
如果不懂得安装第三方库,可以参考本教程第10章中第9节和第10节里面的内容。
(2)创建Flask应用
Flask库安装完成后,我们就可以开始创建一个基本的Flask应用了。首先我们需要导入Flask模块,并创建一个Flask应用实例,代码如下:
动手练一练:
# 导入模块
from flask import Flask
# 创建一个Flask应用实例,注意name前后都是双下划线
app = Flask(__name__)
# 定义根路由,也就是设置网页的根目录
@app.route('/')
def index():
# 返回Hello, Flask!,也就是在网页上显示Hello, Flask!
return 'Hello, Flask!'
# 通过Flask应用程序实例的run()方法启动Web服务器
if __name__ == "__main__":
# Flask绑定本地IP为127.0.0.1,端口为5000
app.run(host='127.0.0.1',port=5000, debug=True)
执行以上代码后,我们在任意浏览器地址栏中输入127.0.0.1:5000或者localhost:5000后按下Enter回车键,就可以在浏览器上看到“Hello, Flask!”这个字符串了。如下图:
代码解析如下:
from flask import Flask:这行代码从Flask库中导入了Flask类。Flask类用于创建Flask应用实例。
app = Flask(name):创建一个Flask应用实例。注意name前后都是双下划线,“name”是一个特殊变量,它在Python脚本被直接运行时为“main",而在被导入时该变量为模块名。
@app.route('/'):这是一个装饰器,用于告诉Flask什么URL应该触发下面的函数。在这个例子中,我们定义了一个根路由“/”,也就是设置了访问网页的根目录,并为该路由绑定了一个视图函数index(),用来输出网页的内容。在该函数中,我们返回了一个字符串“Hello, Flask!”。
def index():定义了一个名为index的函数,这个函数将作为根URL的视图函数。
if name == "main":这是一个常用的Python模式,用于判断脚本是否被直接运行,而不是被导入到另一个脚本中。
app.run(host='127.0.0.1',port=5000, debug=True):将在本地启动一个开发服务器,默认情况下,Flask绑定IP为127.0.0.1,端口为5000,如果需要指定端口,在app.run()方法中指定port即可。通过设置“debug=True”参数,启动应用程序时可以开启调试模式,这在开发过程中非常有用,因为它会在代码改变时自动重新加载应用,并在出现错误时提供调试信息。代码成功运行后,可以在任意浏览器中访问127.0.0.1:5000或者localhost:5000来查看Flask应用程序的运行情况。
(3)创建HTML模板
在前面的例子中,我们成功运行代码后,可以通过浏览器输出“Hello, Flask!”字符串。如果单纯通过Flask框架来制作网页是很丑陋的,页面只有简单的白色和黑色。所以这个时候就需要我们来制作模板渲染了。
Flask支持使用HTML模板来渲染Web页面,这样就可以更方便地构建视图层。
在Flask应用中,我们需要使用render_template()函数将HTML模板渲染到浏览器中。在Pyhint编辑器中,我们可以在项目根目录下创建一个templates文件夹,也就是在“Pyhint\Learn-Python\test”文件夹内新建一个文件夹templates,并在该文件夹下创建一个index.html文件。注意,创建“.html”文件和创建“.py”文件方法类似,只要在templates文件夹内右击鼠标 ->新建 ->文本文档,单击“新建文本文档.txt”的名称,把文件名改为“index.html”文件。最后,双击打开“index.html”文件,输入以下内容并保存。
动手练一练:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Flask 演示</title>
</head>
<body>
<h1>你好, Flask!</h1>
<h2>这是一个简单的Flask演示</h2>
<p>这是我的第一个Flask web网站。</p>
</body>
</html>
项目创建的文件夹结构如下:
Pyhint\Learn-Python\test
├── new.py
└── templates
└─ index.html
接下来,在Pyhint编辑器的new.py中,我们需要使用import语句“from flask import render_template”导入render_template函数,并在index()视图函数中使用该函数来渲染index.html模板。Flask框架在使用这个render_template()模板函数时,会默认去寻找项目文件夹下的templates文件夹里的html文件。例如:
动手练一练:
# 导入模块
from flask import Flask
from flask import render_template
# 创建一个Flask应用实例,注意name前后都是双下划线
app = Flask(__name__)
# 定义根路由,也就是设置网页的根目录
@app.route('/')
def index():
# 会自动查找templates文件夹里面的index.html,并不需要一个绝对路径。
return render_template('index.html')
# 通过Flask应用程序实例的run()方法启动Web服务器
if __name__ == "__main__":
# Flask绑定IP为127.0.0.1,端口为5000
app.run(host='127.0.0.1',port=5000, debug=True)
执行以上代码后,我们在任意浏览器地址栏中输入127.0.0.1:5000或者localhost:5000,就可以访问Flask应用了,这时候浏览器中显示的是index.html中的内容(如果浏览器没有显示,点击浏览器的刷新按钮或者点击键盘F5按钮,刷新一下)。如图: