今天编程学习网为大家讲解flask框架的基本原理,有需要的小伙伴可以参考一下:
Flask 是 Python 编写的一款轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。Flask 使用 BSD 授权。其中两个环境依赖是 Werkzeug 和 jinja2,这意味着它不需要依赖外部库。正因如此,我们将其称为轻量级框架。
对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
1.1 WSGI是什么?
WSGI(web服务网关接口(Python Web Server Gateway Interface,缩写为WSGI)的本质是一种约定,是Python web开发中 web服务器与web应用程序之间数据交互的约定。
网关协议的本质是为了解耦,实现web服务器和web应用程序的分离,WSGI就是一个支持WSGI的web服务器与Python web应用程序之间的约定。
1.2 Flask的优点
Flask属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖外部库的框架。
框架很轻量
更新时依赖小
专注于安全方面的bug
1.3 Flask框架依赖组件
Route(路由)
templates(模板)
Models(ORM模型)
blueprint(蓝图)
Jinja2模板引擎
1.4 Flask钩子函数
在Flask中钩子函数是使用特定的装饰器的函数。钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数。
常用的钩子函数:
before_first_request:处理第一次请求之前执行。
@app.before_first_request
def first_request():
print("first time request")
before_request:在每次请求之前执行,通常可以用这个装饰器来给视图函数增加一些变量。
@app.before_request
def before_request():
id = session.get('id')
name = session.get('name')
if id:
g.user = name
context_processor:上下文处理器,返回的字典中的键可以在模板上下文中使用。
@app.context_processor
def my_context_processor():
if hasattr(g, 'user'):
return {'login_user': g.user}
return {}
template_filter:在使用Jinja2模板的时候自定义过滤器。比如可以增加一个upper的过滤器。
@app.template_filter
def upper_filter(s):
return s.upper()
以上就是“flask框架的基本原理”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/10431/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料