python框架之Flask一
-
Flask简介
python的web的框架—Flask,Flask主要是用来开发网站应用,基础包括环境搭建,路由编写,请求参数传递与获取以及响应的过程。
-
安装
网站开发可以使用多种编程语言实现,只不过实现的过程和编码方式不同,开发原理是一致的,对于python来说,网站开发主流框架有Django,Flask,Tornado,Django是企业级别的框架,是python中的大型框架,小企业可能会选择Flask,因为可以实现快速开发,也较为简单,
Flask的设计易于使用和扩展, 依赖于两个外部库:Ji时a2模板引擎和Werkzeug WSGI 工具包。它的初衷是为各种复杂的Web应用程序构建坚实的基础, PythonWeb开发人员可以自由地插入任何扩展, 也可以自由构建自己的模块, 具有很强的扩展性。Flask具有开箱即用的优点, 并有以下的特点:
(1)内置开发服务器 和快速调试器。
(2)集成支持单元测试。
(3)RESTful可请求调度。
(4)Jinja2模板。
(5)支持安全cookie C客户端会话)。
(6)符合WSGl 1.0。
(7)基于Unicode
总而言之, Flask是最精简且功能最丰富的微框架之 ,它拥有蓬勃发展的社区, 丰富的扩展模块和完善的API, 且具有快速开发、 强大的 WSGI功能、 Web应用程序的单元可测性以及大量文档等优点。
Flask的安装可以使用pip指令完成, 在Windows的CMD窗口下输入pip install flask 并按回车键等待安装即可。安装成功后进入Python交互模式, 验证是否安装成功, 验证方法如图
因为我已经安装了,所以会显示already,版本是2.0.2.
-
快速实现一个简单的网站系统
首先使用flask来开发网站系统。创建main.py文件,在该文件里编写以下代码可实现一个简单的网站系统。
#导入Flask,从flask中加载Flask模块
from flask import Flask
#创建一个Flask实例
app = Flask(__name__)
#设置路由地址,即网页地址,也是url
@app.route('/')
#url 的处理函数
def hello_world():
#返回的网页
return "hello girls and boys"
if __name__ == '__main__':
app.run()上述代码主要分为三部分:Flask实例化,定义网站的路由地址和函数,网站的运行入口:
• Flask实例化:这是通过Python的Flask模块实例化, 因为 Python是面向对象编程语言, 而实例化是创建一个Flask对象, 它代表整个网站系统。
• 定义网站的路由地址和函数:网站路由由Flask对象app的route装饰器定义, 它对网站系统添加网站地址, 每个网站地址都由一个路由函数处理, 这个函数用于响应用户的请 求, 比如用户在浏览器上访问这个网址, 那么网站系统必须对用户的HTTP请求做出响应, 这个响应过程就是由这个路由函数处理和实现的
• 网站的运行入口:用于启动并运行网站, 由app对象的run()方法实现。 run()方法里可以 设直相应的参数来设置网站的运行方式。
执行这段代码,结果如下:
点击结果中的链接就是网站内容
-
路由编写规则
路由地址是以"/"表示,而在浏览器却变成了http://127.0.0.1 :5000/。因为路由地址第一个 " / " 表示网站的域名或IP地址, 也就是我们常说的网站首页。 网站的路由地址编写规则与Windows的文件目录路径是相似的, 每个 " / " 代表不同的路由等级,每个路由等级的命名可以是固定的或以变量表示, 如下所示:
#导入Flask,从flask中加载Flask模块
from flask import Flask
#创建一个Flask实例
app = Flask(__name__)
#设置路由地址,即网页地址,也是url
@app.route('/')
#url 的处理函数
def hello_world():
#返回的网页
return "hello girls and boys"
#路由地址:http://127.0.0.1:5000/user/
@app.route('/user/')
def user():
return 'This is user center'
#路由地址:http://127.0.0.1:5000/user/xxx
@app.route('/user/<types>')
def userCenter(types):
return "this is user's " + types + " page"
if __name__ == '__main__':
app.run()上述例子设置了两个不同等级的路由地址, 通常情况下网站首页( " / " 〉称为根目录, 路由/user/代表网站的二级目录: 而' /user/<types>'是' /user/'下的子目录, 也是网站的三级目录, 其中<types>是一个变量, 可代表任意内容, 并且路由的变量可以传递到路由函数 userCenter里使用。
在路由中设置变量可对路由进行精简处理, 比如路由地址中设有日期格式, 若按照一年来计算, 每天就要设定一个路由地址, 那么一年就需要设置365个路由, 如果将日期设为变量表示, 只需一个路由即可解决。 在浏览器上分别将路由变量设为login、logout和 relogin, 网站会将变量值显示到网页上, 如图
路由的编写规则还可以设置HTTP 请求,HTTP 的请求方法有GET,POST, OPTIONS, PUT, DELETE, TRACE和CONNECT方法。一般情况下,GET和POST方法
是最为常用的HTTP请求,GET请求是从网站中获取数据并显示在浏览器上,POST请求是将用户输入在浏览器的数据提交到网站系统里进行处理。同一个路由地址可以设置不同的HTTP请求方式,并可以设置每种请求方式的处理方法,具体代码如下:
#导入request方法 from flask import request #参数methods是设置HTTP请求方法 @app.route('/user/', methods=['GET','POST']) def users(): #判断当前的请求方式,执行不同的处理 if request.methods == 'GET': return 'This is user center' else: return 'This is my center'
当用户在浏览器上访问http://127.0.0.1:5000/user/的时候,实质上是对网站发送一个HTTP的 GET请求,网站收到请求后,在路由函数user里判断请求类型,再根据请求类型 执行相应的处理,最后将处理结果返回到浏览器。