二、Flask路由

路由的含义可以从字面意义理解,作为动词时,它的含义是“按某路线发送”,即调用与请求URL对应的视图函数。Flask的路由需要使用装饰器@app.route()完成。
如入门程序中的

@app.route('/') 
def index(): 
    return '

Hello, World!

'

在这个程序里,app.route()装饰器把根地址/视图函数 index()函数绑定起来,当用户访问这个URL时就会触发index()函数。这个视图函 数可以像其他普通函数一样执行任意操作,比如从数据库中获取信息, 获取请求信息,对用户输入的数据进行计算和处理等。最后,视图函数返回的值将作为响应的主体,一般来说,响应的主体就是呈现在浏览器窗口的HTML页面。在最入门程序中,视图函数index()返回一行问候:
Hello,World!

1.route()装饰器第一个参数为URL规则,用字符串表示,必须以 / 开始,这里的URL是相对URL,是不包括域名的URL;
2.一个视图函数可以绑定多个路由,如:

@app.route('/') 
@app.route('/hello')
def index(): 
    return '

Hello, World!

'

此时访问127.0.0.1:5000127.0.0.1:5000/hello均会执行index(),返回的内容均为Hello,World!
3.动态URL,动态URL指在URL规则中添加变量部分,使用<变量名>表示

@app.route('/greet/')
def greet(name):
    return '

hello,%s

' % name

当URL规则中包含变量时,如果用户访问的URL中没有添加变量, 比如/greet,那么Flask在匹配失败后会返回一个404错误响应。一个很常见的行为是app.route()装饰器里使用defaults参数设置URL变量的默认值,这个参数接收字典作为输入,存储URL变量和默认值的映射。在下面的代码中,我们为greet视图新添加了一个app.route()装饰器z为/greet设置了默认的name值:

@app.route('/greet', defaults={'name': 'Programmer'}) 
@app.route('/greet/') 
def greet(name): 
    return '

Hello, %s!

' % name #以上代码等同于 @app.route('/greet') @app.route('/greet/') def greet(name='Programmer'): return '

Hello, %s!

' % name

这时如果用户访问/greet,那么变量name会使用默认值 Programmer,视图函数返回

Hello,Programmer!

你可能感兴趣的:(二、Flask路由)