下面主要对Flask的几种路由注册方式做简要介绍,以及说明一些使用过程中遇到的问题。
在Flask中使用Python装饰器来注册路由。装饰器的相关用法如下:在一个函数的上方加上@,@后则是所用的具体装饰器。 注册路由所用装饰器基本格式为:@app.route()
1.将一个url地址与视图函数绑定起来
在flask中编写的函数若想访问,则需通过url地址来访问。当我们在网址中输入一串地址后,后台会根据你的路由注册信息执行相应的视图函数。
@app.route('/')
def welcome():
return 'Hello! Welcome to this website!'
上述装饰器中的参数是url的相对地址,“/”即根地址 (如localhost或127.0.0.0),而“/hello”即为127.0.0.0/hello
一个小问题:
在输入网址时,用户可能会在最末端输入一个“/”,如果想要响应这种地址,只需在路由注册时添加进去即可。
@app.route('/hello/')
def welcome():
return 'Hello! Welcome to this website!'
在这种设置下,既能响应127.0.0.0/hello,又能响应127.0.0.0/hello/
2.将一个函数与多个url地址绑定
当输入不同的网址时,可以向用户展示相同的界面,例如,我们可以将上述两个地址绑定到一个函数上。
@app.route('/')
@app.route('/hello/')
def welcome():
return 'Hello! Welcome to this website!'
你还可以绑定更多的url地址。
3.绑定动态url
当绑定过多的url时,如果它们可以提取为一个变量,我们为其绑定动态url。使用<变量>的形式来绑定。
@app.route('/greet/<name>/')
def greet(name):
return 'Hello, %s!' % name
这样,我们就可以根据不同的name来显示相应的视图函数。比如:.../greet/Tom会显示Hello, Tom!、.../greet/Mary会显示Hello, Mary!
一个小问题:
当使用动态url时,如果用户没有输入相应的name值,则会出现404错误。此时,我们可以设置一个默认值来避免这种情况的发生:
@app.route('/greet/', defaults={'name': 'student'})
@app.route('/greet/<name>/')
def greet(name):
return 'Hello, %s!' % name
此时,输入127.0.0.0/greet会显示默认界面:Hello,student!