美文网首页
二、Flask路由

二、Flask路由

作者: 安东尼卡 | 来源:发表于2020-02-27 22:43 被阅读0次

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

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

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

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

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

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

@app.route('/greet/<name>')
def greet(name):
    return '<h1>hello,%s </h1>' % 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/<name>') 
def greet(name): 
    return '<h1>Hello, %s!</h1>' % name
#以上代码等同于
@app.route('/greet') 
@app.route('/greet/<name>') 
def greet(name='Programmer'):
     return '<h1>Hello, %s!</h1>' % name

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

相关文章

网友评论

      本文标题:二、Flask路由

      本文链接:https://www.haomeiwen.com/subject/suffhhtx.html