一、route()路由
功能:将URL绑定到函数
用法:
@app.route(url, methods=['GET', 'POST']) #url必填,methods非必填
def view_func():
# 处理请求并返回响应
二、路由函数route()的使用
路由函数route()的调用有两种方式:静态路由和动态路由
方式1:静态路由
@app.route(“/xxx”) xxx为静态路径 如::/index ,可以返回一个值、字符串、页面等
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello_world():
return 'Hello World'
@app.route('/hello')
def index():
return render_template('hello.html')
if __name__ == '__main__':
app.run(debug = True)
方式2:动态路由
采用<>中标记变量动态构造url地址
@app.route(“/”),这里xxx为不确定的路径
from flask import Flask
app = Flask(__name__)
@app.route('/user/<id>')
def hello_world(id): # put application's code here
if id == '1':
return 'python'
if id == str(2):
return 'java'
if id == '3':
return 'flask'
return 'Hello World!'
if __name__ == '__main__':
app.run(debug = True)
注意:url地址传入的变量默认为字符串类型,一些情况需要格式转换后才能使用,也可以置于参数前将接收的参数转化为对应类型。如下:
string 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 接受包含斜杠的文本
@app.route("/index/<int:id>",)
def index(id):
if id == 1:
return 'first'
elif id == 2:
return 'second'
elif id == 3:
return 'thrid'
else:
return 'hello world!'
if __name__=='__main__':
app.run()
3、url地址更新
如果使用蓝图,蓝图中参数:url_prefix还可以统一调整url地址,格式如:form = Blueprint(‘formDis111’, name, url_prefix=“/news”)
则表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由
三、route()其它参数
methods: 当前视图函数支持的请求方式,不设置默认为GET;请求方式不区分大小写
- methods=[‘GET’] 支持的请求方法为GET
- methods=[‘POST’] 支持的请求方法为POST
- methods=[‘GET’,‘POST’] 支持的请求方法为POST GET
@app.route('/login', methods=['GET', 'POST']) # 请求参数设置不区分大小写,源码中自动进行了upper
def login():
if request.method == 'GET':
return render_template('login.html')
elif request.method == 'POST':
username = request.form.get('username')
pwd = request.form.get('password')
if username == 'admin01' and pwd== '123456':
return 'login successed'
else:
return 'login failed!!!'
四、地址尾部的/
有时候我们在接口路径末尾加/和不加/的时候,访问是一致的,但有些加了/访问又报错,flask对路由尾部的/是有做处理的:
- flask添加路由的尾部带有/:访问时加/和不加/效果是一样的
- flask添加路由的尾部没有/:访问时加/访问会报错,未加/才能访问成功