视图函数如果返回的是一个字符串,会创建以该字符串数据为响应体,状态码为200,MIME类型为text/html的Response对象(werkzeug.wrappers.Response)。如果返回的是一个响应对象它会直接返回,如通过make_response()构建的响应对象。视图函数还可以返回元组,元组必须至少包含一个元素,该元素即为响应体,完整的元组格式为:(响应体, 状态码, 响应头字典),make_response()的参数与之一致。
Flask:钩子装饰器
发表于 | 分类于 Python
Flask提供了一些装饰器让我们很容易在请求到来时和请求执行完后做一些处理,装饰器修饰的函数会被Flask注册,当条件满足时它们会被触发,有点类似于AOP中的通知。
- @app.before_first_request: 当服务器第一个请求到来时调用
- @app.before_request: 会在每个请求前执行
- @app.after_request: 会在每个请求后执行,处理函数必须传入参数接收响应对象并返回(允许修改返回对象),抛出异常时不会调用该函数,该函数必须返回响应对象否则页面无响应。
- @app.teardown_request: 会在每个请求后执行,请求发生异常时也会被调用,处理函数必须传入参数接收异常信息。
注: @app.after_request和@app.teardown_request修饰的函数必须要有一个参数,分别用于接收响应对象和错误信息。
Flask:获取请求数据
发表于 | 分类于 Python
HTTP支持多个请求方法,最常用的有两种:GET 和 POST,GET请求的数据一般通过URL的方式传递给服务器,由于URL的长度有限制所以传递的数据量有限;而POST通过请求消息体把数据传递给服务器,所以理论上来说对数据量大小没有限制。
其他常见请求方法: HEAD(与GET请求方式一样,但是只处理请求头消息)、DELETE(多用于REST中,表示删除一个资源)、PUT(多用于REST中,表示添加一个资源)
消息传递格式:
- GET:URL?参数名=参数值
- POST:参数名=参数值
多个参数名值对之间通过 & 进行分隔
Flask:URL路由
发表于 | 分类于 Python
URL路由就是告诉Flask框架当访问某个URL时指定哪个函数去处理,也可以理解为URL和处理函数之间的映射或绑定,这个处理函数一般叫做视图函数,一个视图函数可以绑定多个URL。
添加路由绑定常用的有两种方式:
- @app.route(“URL规则”)
- app.add_url_rule(“URL规则”, view_func=处理函数)
注: 查看源代码可以发现,上面的装饰器内部其实是使用下面的方式进行绑定URL的
Flask:Hello World
发表于 | 分类于 Python
Flask是一个基于Python的Web框架,与Django不同的是它没有为开发者做过多的选择而且很容易进行替换,开发者可以选择自己喜欢的方式来构建应用,小巧灵活。