路由的含义可以从字面意义理解,作为动词时,它的含义是“按某路线发送”,即调用与请求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:5000
和127.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>
。
网友评论