一、装饰器:@app.route
1、URL 要与执行函数进行映射,使用的是@app.route 装饰器。@app.route 装饰器中,可以指定URL 的规则来进行更加详细的映射,比如现在要映射一个文章详情的URL
?a、url可以跟id,id一般为1,2,3,4,5,6这样的整型数据(int)
b、如果需要指定类型,则要写成<converter:variable>
c、一般的类型:
-
string: 默认的数据类型,接受没有任何斜杠/ 的字符串。 -
int: 整形 -
float: 浮点型。 -
path: 和string 类似,但是可以传递斜杠/ 。 -
uuid: uuid 类型的字符串。 -
any:可以指定多种路径,这个通过一个例子来进行说明:
二、数据类型不匹配报错处理
1、TypeError
?2、数据类型异常处理,这里的id:1001、1002、1003、1004为int类型,Flask架构没有统一进行数据处理,要么需要前端做验证,要么就是后端从视图上面直接处理。
?3、设置访问的url可以是其他,list,也可以是个‘/’
?4、下面的实操自己玩玩
from flask import Flask,jsonify # jsonify,json格式的字符转换
import config # 导入配置文件,配置文件较多的时候放到config里面统一调用
app = Flask(__name__)
app.config.from_object(config)
goods= [
{"id":1001,"name":"凉山蔬菜","price":12,},
{"id":1002,"name":"莲花白","price": 12,},
{"id":1003,"name":"花生米","price": 12,},
{"id":1004,"name":"鲜牛腩","price": 12,}
]
@app.route('/goods/<int:goods_id>') # 有参数的的视图函数
def book_detail(goods_id):
for book in goods:
if goods_id == goods['id']:
return goods
return f'id为:{goods_id}的菜品没有找到!'
@app.route("/goods/list") # 没参数的视图函数
def goods_list():
return jsonify(goods)
# # @app.route:设置访问的url,现在演示的是设置成一个根路径
@app.route('/')
def item():
return {"username":"title"} # 运行结果: "username": "\u662f\u7684"
if __name__ == '__main__':
app.run(debug=True)
?
|