[python3.6 flask web学习]web服务器基本结构

来源:互联网 发布:平安委外管理岗 知乎 编辑:程序博客网 时间:2024/06/04 19:57

1.web服务器

web服务器是一种服务器网关接口(WSGI),它把来自客户端的所有请求都转交给web服务器处理。flask创建这种程序实例来处理客户端请求。初始化方式如下:

import flask from Flaskapp = Flask(__name__)

其中__name__是主程序或者包的名称,用来确定包内资源路径。

2.路由和视图函数

路由就是程序实例知道怎么处理来自客户端的各种请求。简单的说就是客户端来的url和处理的视图函数的之间的映射关系。

flask采用装饰器来完成这种映射。

@app.route("/")def index():      return "<h1>hello, world!</h1>"
上述代码就完成了主页的映射。而index()这种处理url请求的函数就是视图函数。

接受参数的视图函数

@app.route("/user/<name>")def user(name):      return "<h1>hello, %s</h1>" % name

当然也可以传入类型,如果只处理int型的参数,则可以写成<int:name>。目前flask接受三种类型int,float,path(类似于string,只是把“/”当作字符处理)

3.完整的web程序

import flask from Flaskapp = Flask(__name__)@app.route("/")def index():      return '<h1>hello, word!</h1>'if __name__ == "__main__":       app.run(debug=True) //以调试模式运行,便于观察日志

运行这个程序之后便可以在浏览器上访问了。


4.Flask的请求响应原理

都知道,web服务器都有一些类似全局变量的数据。jsp有内置对象,为了便于后台跟前端的通信,Flask也存在这种对象。

在Flask中,这种对象分为两种:程序上下文和请求上下文。Flask在请求分发之前激活这些对象,请求完成之后再删除。

程序上下文:

current_app #当前激活程序的程序实例

g #请求处理时用做临时存储数据的对象,每次请求都会重设这个值


请求上下文:

request,session

5.请求映射

可以通过Flask 中的url_map变量查看当前的映射集合。

例如查看上面的hello.py映射集合

from hello import appapp.url_app

6.请求钩子

请求钩子主要是针对那种需要重复利用的功能比如权限验证,用户登录验证或者处理请求之前之后调用。采用装饰器实现。

Flask有四种请求钩子:

before_first_request  注册一个函数,在第一个请求处理之前执行

before_request 注册一个函数,在请求之前执行。

after_request 注册一个函数,如果没有未处理的异常抛出来,则在每次请求之后执行

teardown_request 注册一个函数,即使有未处理的异常,还是会在每次请求之后执行


7.Flask扩展

Flask被设计成可扩展形式,因此他只有最核心的一些功能。对于数据库等其他的功能,则是采用扩展模块的形式来完成。

进入到虚拟环境采用pip install 模块名  形式安装扩张模块



阅读全文
0 1