程序讲解
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello Ricky!</h1>'
if __name__ == '__main__':
app.run(debug=True)
1. 初始化
from flask import Flask
app = Flask(__name__)
Flask程序都要创建一个程序的实例。这里有个概念:WSGI
Web 服务器网关接口(Web Server Gateway Interface, WSGI),字面意思理解:这东西是一个Gateway,也就是网关,网关的作用就是在协议之间进行转换,也就是说它是Web服务器使用的一种协议,同时也是一个规范,是服务器程序与应用程序的一个约定,它规定了双方各自需要实现什么接口,提供什么功能,以便二者能够配合使用。
WSGI.pngWSGI : 除了flup Server/Gateway外还有很多其他人的写的Server/Gateway, 这个时候就会出问题了,如果你在flup上写了一个程序,现在由于各种原因你要使用xdly了,这个时候你的程序也许就要做很多痛苦的修改才能使用 xdly server了,WSGI就是一个规范,他规范了flup这个服务应该怎么写,应该使用什么方式什么参数调用你写的程序(application)等,当然同时也规范你的程序应该怎么写了,这样的话,只要flup跟xdly都遵守WSGI的话,你的程序在两个上面都可以使用了,flup就是一个WSGI server.
学习链接1
学习链接2
学习链接3
回到我们的程序上来,前两句中,Flask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中, Python 的 _ name _ 变量就是所需的值
2. 路由和视图函数
- 路由
@app.route('/')
def index():
return '<h1>Hello Ricky!</h1>'
route装饰器 :可以使用Flask应用实例的route装饰器将一个URL规则绑定到 一个视图函数上。
上面的例子就是把URL的规则 / 绑定到视图函数index()上,我们最后访问http://127.0.0.1:5000 的时候,就看到 hello Ricky!
客户端(例如 Web 浏览器)把请求发送给 Web 服务器, Web 服务器再把请求发送给程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到Python 函数的映射关系。处理 URL 和函数之间关系的程序称为路由。从字面意思理解来:由就是在迷茫中找出一条路的意思。在Flask框架中,路由就表示为用户请求的URL找出其对应的处理函数
学习链接
-
视图函数
我们把 index() 函数注册为程序根地址的处理程序。如果部署程序的服务器域名为 www.example.com,在浏览器中访问 http://www.example.com 后, 会触发服务器执行 index() 函数。这个函数的返回值称为响应,是客户端接收到的内容。如果客户端是 Web 浏览器, 响应就是显示给用户查看的文档。像 index() 这样的函数称为视图函数(view function)。视图函数返回的响应可以是包含HTML 的简单字符串,也可以是复杂的表单 -
动态路由
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
尖括号中的内容就是动态部分,任何能匹配静态部分的 URL 都会映射到这个路由上。调用视图函数时, Flask 会将动态部分作为参数传入函数。在这个视图函数中,参数用于生成针对个人的欢迎消息。
动态路由.png路由中的动态部分默认使用字符串,不过也可使用类型定义。Flask 支持在路由中使用 int、 float 和 path 类型。path 类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。
3. 启动服务器
if __name__ == '__main__':
app.run(debug=True)
_ name _ == '_ main _' 是 Python 的惯常用法,在这里确保直接执行这个脚本时才启动开发Web 服务器。 如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行 app.run()。
debug模式两大好处:
- 当程序出问题的时候,可以直接在页面中就看到错误的信息和出错的位置。
- 我们修改了项目中的文件,程序会自动加载,不需要我们手动的加载服务器。
网友评论