Python--flask 基础

Python–flask基础

1.1 Flask程序的实例化

所有Flask程序都必须创建一个程序实例。web服务器使用一种名为web服务器网关接口(WSGI)的协议将来自客户端的所有请求都转交给这个对象处理。程序实例是Flask类的对象,经常使用下述代码创建:

from flask import Flask
app = Flask(__name__) 

Flask类的构造函数只有一个必须指定的参数,即主模块或包的名字。在大多数程序中python的__name__就是所需要的值

1.2 路由和视图函数

路由:处理URL和函数之间关系的程序
在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修饰的函数注册为路由。

@app.rout('/')
def index():
	return '<h1>Hello World!</h1>'

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

像 index() 这样的函数称为视图函数(view function)。视图函数返回的响应可以是包含 HTML 的简单字符串,也可以是复杂的表单

1.3 启动服务器

程序实例用run方法启动Flask集成的开发web服务器

if __name__ == '__main__':
	app.run(debug=True)

有一些选项参数可被 app.run() 函数接受用于设置 Web 服务器的操作模式。在开发过程中 启用调试模式会带来一些便利,比如说激活调试器和重载程序。要想启用调试模式,我们 可以把 debug 参数设为 True。

1.4 第一个可执行程序

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
	return '<h1>Hello World!</h1>'

if __name__ == '__main__':
	app.run(debug=True)

1.5.1 请求上下文

变量名 上下文 说明
current_app 程序上下文 当前激活程序的程序实例
g 程序上下文 处理请求时用作临时存储的对象。每次请求都会重设这个变量
request 请求上下文 请求对象,封装了客户端发出的 HTTP 请求中的内容
session 请求上下文 用户会话,用于存储请求之间需要“记住”的值的词典

Flask 在分发请求之前激活(或推送)程序和请求上下文,请求处理完成后再将其删除。程序上下文被推送后,就可以在线程中使用 current_app 和 g 变量。类似地,请求上下文被推送后,就可以使用 request 和 session 变量。如果使用这些变量时我们没有激活程序上 下文或请求上下文,就会导致错误。

1.5.2 请求调度

程序收到客户端发来的请求时,要找到处理该请求的视图函数。为了完成这个任务,Flask 会在程序的 URL 映射中查找请求的 URL。URL 映射是 URL 和视图函数之间的对应关系。 Flask 使用 app.route 修饰器或者非修饰器形式的 app.add_url_rule() 生成映射。

1.5.2 请求钩子

请求钩子使用修饰器实现。Flask 支持以下 4 种钩子。
• 注册一个函数,在处理第一个请求之前运行。 before_first_request
• 注册一个函数,在每次请求之前运行。 before_request
• 注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。 after_request
• 注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。teardown_request

1.5.3 Flask扩展

Flask 被设计为可扩展形式,故而没有提供一些重要的功能,例如数据库和用户认证,所 以开发者可以自由选择最适合程序的包,或者按需求自行开发。

使用Flask-Script支持命令行选项
Flask 的开发 Web 服务器支持很多启动设置选项,但只能在脚本中作为参数传给 app.run() 函数。这种方式并不十分方便,传递设置选项的理想方式是使用命令行参数。Flask-Script 是一个 Flask 扩展,为 Flask 程序添加了一个命令行解析器。Flask-Script 自带 了一组常用选项,而且还支持自定义命令
先用pip安装Flask-Script扩展

pip install falsk-script

使用Flask-Script

from flask.ext.script import Manager
manager = Manager(app)

if __name_- == '__main__':
	manager.run()

专为 Flask 开发的扩展都暴漏在 flask.ext 命名空间下。Flask-Script 输出了一个名为 Manager 的类,可从 flask.ext.script 中引入。

这个扩展的初始化方法也适用于其他很多扩展:把程序实例作为参数传给构造函数,初始化主类的实例。创建的对象可以在各个扩展中使用。在这里,服务器由 manager.run() 启 动,启动后就能解析命令行了。

发布了33 篇原创文章 · 获赞 1 · 访问量 2293

猜你喜欢

转载自blog.csdn.net/qq_40805620/article/details/100538075
今日推荐