Python Flask:路由
来自CloudWiki
定义
处理URL和函数之间关系的程序 称为路由,
而这个函数称为视图函数。
Flask中使用路由
使用程序实例提供的app.route装饰器,
把装饰的函数注册为路由:
from flask import Flask app = Flask(__name__) @app.route('/hello') def hello_world(): return '你好' if __name__ == '__main__': #app.debug = True app.run()
当浏览器访问 http://127.0.0.1:5000/hello 时,URL会触发hello_world()函数,执行函数体中的代码。
给URL添加变量
from flask import Flask app = Flask(__name__) @app.route('/user/<username>') #添加字符串变量,默认 def show_user_profile(username): return 'User: %s' % username @app.route('/post/<int:post_id>')#添加整形变量 def show_post(post_id): return 'Post ID: %d' % post_id @app.route('/rev/<float:revNo>')#添加浮点数变量 def revision(revNo): return 'Revision Number %f' % revNo if __name__ == '__main__': #app.debug = True app.run()
访问http://127.0.0.1:5000/user/张三 时就会触发show_use_profile函数
访问http://127.0.0.1:5000/post/123 时就会触发show_post函数
show_post()函数使用了转换器,它有下面几种类型:
- Int
- float
- path
代码中使用int:post_id将其设置为整形
指定多个参数: https://www.cnpython.com/qa/1371656
为视图绑定多个URL
一个视图可以绑定多个URL,
from flask import Flask app = Flask(__name__) @app.route('/') @app.route('/index') def index(): return "Welcome to Flask" if __name__ == '__main__': app.run()
访问 http://127.0.0.1:5000/index 和http://127.0.0.1:5000/ 都可以访问网页
构建URL
Flask除了能够匹配URL ,还能生成URL,
Flask可以用url_for()来给指定的函数构造URL.
from flask import Flask,url_for app = Flask(__name__) @app.route('/user/<username>') def show_user_profile(username): # 显示该用户名的用户信息 return 'User: %s' % username @app.route('/post/<int:post_id>') def show_post(post_id): # 根据ID显示文章,ID是整型数据 return 'Post ID: %d' % post_id @app.route('/url/') def redirect_to_url(): # 跳转到show_post()视图函数 print(url_for('show_post', post_id=10)) return url_for('show_post', post_id=10) if __name__ == '__main__': app.run()
HTTP方法
默认情况下,路由只回应GET请求
但是通过route()装饰器 传递methods参数可以改变这个行为。
@app.route('/login',methods=['GET','POST'])
- GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
- POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
- PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
- HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
- DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
- OPTIONS:查询相应URI支持的HTTP方法。