对于一个web程序来说,最基础的要求就是要回应客户端的请求。当输入知乎的地址知乎 - 与世界分享你的知识、经验和见解,这个网址请求的知乎的根路径“/”。
1.建立一个flask实例
要想接收客户端的请求,首先要做的就是建立一个服务器端的实例。
from flask import Flask
app = Flask(__name__)
实例的参数就是当前的文件名,系统可以根据这个参数获得程序的路径,并找到相关的资源。
2.路由
当客户端的请求到达时,在请求报文中会给出请求资源的路径。如何处理这些路径对应的资源?这就是路由要解决的事情。
@app.route('/')
def index():
return '
Hello Flask
'app.route其实只是一个装饰器,而且是一个功能并不复杂的装饰器。这个装饰器的功能就是把路径和对应出视图函数(如index)关联起来。这种关联不一定是一对一的,还可以多个路径对应一个视图函数。知乎专栏
对于上面这样的链接,可以看出数字部分其实是动态的,所以路由还需要处理一些动态路径。
@app.route('/hello/')
def hello(name):
return '
Hello {}!
'.format(name)3.运行
if __name__=='__main__':
app.run(debug=True)
把上面的代码存储为hello.py,在虚拟环境中运行。
python hello.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
由于这里是在本机上开的5000端口,所以同网络的机器是访问不了这个服务器的,这里可以设置run的参数host为0.0.0.0。
*4.路由装饰器的实现
路由装饰器的功能就是把请求路径与视图函数关联起来,这里简单的实现这个功能。
class App:
def __init__(self):
self.routes = {}
def route(self,url):
def df(func):
self.routes[url] = func
def wrapper(*args, **kwargs):
return func(*args,**kwargs)
return wrapper
return df