from flask import Flask app = Flask(__name__) # # 路由用法 # @app.route('/') def hello_world(): # 这种方法再不传参的情况下可以使用,一般用在首页 # 导航栏:http://127.0.0.1:5000 return 'hello world!!!' @app.route('/hello') def hello_world1(): # 导航栏访问:http://127.0.0.1:5000/hello return 'hello world!!!' @app.route('/hello/<name>') def hello_world2(name): # 这里可以传递一个参数 # 导航栏访问:http://127.0.0.1:5000/hello/namejr return '{}, hello'.format(name) @app.route('/hello/<int:num>') def hello(num): # 可以指定参数的类型 # 导航栏访问:http://127.0.0.1:5000/hello/88 # 除了可以指定int(整形)之外,还可以指定:string(字符串,但值得注意的是不能够包含'/')、float(浮点型)、path(路径,与string的区别是这里可以包含'/')、uuid(uuid的字符串) # UUID是一种唯一识别码,其目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。(来源百度百科) return '{} is a number'.format(num)
关于url_for:
from flask import Flask, url_for app = Flask(__name__) # # 关于url_for # url_for用来可以直接获取对应函数名的路由路径 # 这样的好处就是不管你如何更改路径,只要函数名没有改变,使用url_for都能够直接的获取对应的路径 # @app.route('/') def index(): return url_for('hello') # 打印"/hello" @app.route('/hello') def hello(): return "hello True" if __name__ == '__main__': app.debug = True app.run()
我们可以使用test_request_content(test_request_content是一个用服务器来模拟用户发送请求的函数,实际上并没有用户发送数据)来测试一下
from flask import Flask, url_for app = Flask(__name__) # # 关于url_for # url_for用来可以直接获取对应函数名的路由路径 # 这样的好处就是不管你如何更改路径,只要函数名没有改变,使用url_for都能够直接的获取对应的路径 # @app.route('/') def index(): return url_for('hello') # 打印"/hello" @app.route('/hello/') def hello(): return "hello True" # 构建模拟情景 with app.test_request_context(): print(url_for('index')) # 打印"/" print(url_for('hello')) # 打印"/hello/" if __name__ == '__main__': app.debug = True app.run()
顺带一提:在编写路由的时候,你可以写成"@app.route('/hello/')",当然也可以写成"@app.route('/hello')",但是我最终建议还是写成前者,如果你访问的是"http://127.0.0.1:5000/hello",那么都可以访问,但是如果访问的是"http://127.0.0.1:5000/hello/"那么后者将会报出404("Not Found")错误,不信你试试,反正我试过了
PS:路由,不就是装饰器嘛
HTTP: