文章目录
前言
本文主要是介绍对路由的理解、路由的两种形式,无参和有参、路由参数的类型。
提示:以下是本篇文章正文内容,下面案例可供参考
一、路由是什么?
路由就是将客户端发送过来的请求分发到指定的函数上,而Flask项目中的路由是通过装饰器对应视图函数,并且可以接收参数。两种形式如下:
- 无参数传递的路由
@app.route('/rule/')
def index():
return 'infdex'
- 有参数传递的路由
@app.route('/string/<name>/')
def get_string(name):
return name
二、路由参数类型
Flask框架中的路由有6种常用的参数类型,如下图:
1.string类型
string类型是接收任何没有斜杠('/')的文件,其中路径就不行(因为有 '/')。
下面列举一个示例帮助理解:
代码如下:
@app.route('/string/<string:name>/')
def get_string(name):
print(type(name)) # <class str>
return name
- 当输入hello时,网页显示如下:
- 当输入hello/123时,网页显示如下:
这就说明 如果输入的有斜杠就会报错,该类型是不能接收有斜杠的参数值。
2.int类型
int类型是接收整数,与string类型的写法是类似的。
注:return函数只能返回string, dict, list, tuple with headers or status, Response instance, or WSGI callable,不能是整数。
下面列举一个示例帮助理解:
代码如下:
@app.route('/int/<int:id>/')
def get_int(id):
print(type(id)) # <class str>
return str(id)
当输入1234,网页显示如下:
3、uuid类型
uuid类型只接收uuid字符串,唯一码,一种生成规则,需要用到uuid4()这个函数生成一个唯一的uuid值,然后uuid类型的参数也只能接收这个生成的唯一的值。
下面列举一个示例帮助理解:
代码如下:
@app.route('/uuid/<uuid:id>/')
def get_uuid(id):
print(type(id)) # <class str>
return 'uuid编码是'+str(id)
#注:其中的传递的id必须是get_uuid2函数获取到值
#id:08328028-8ab6-4835-a4d0-74567f91ddb1
#用来生成唯一码
@app.route('/getuuid/')
def get_uuid2():
import uuid #导入该包
print(type(id)) # <class str>
return str(uuid.uuid4())
生成的唯一码结果如下:
当输入这个唯一码时,传参结果如下:
注:其中的传递的id必须是get_uuid2函数获取到值
id:77341e9d-3b0c-4d4f-b639-5d6fdea64ed4
当输入其他字符时,网页结果如下:(结果报错了)
4、 any类型
any类型是从列出的选择一个,可以做性别男女作为可选参数。
下面列举一个示例帮助理解:
代码如下:
@app.route('/any/<any(apple,orange,banana):fruit>/')
def get_any(fruit):
print(type(fruit)) # <class str>
return str(fruit)
当输入any列出的任意一个时,结果如下:
当输入不在列出的这几个选项时,结果如下:(报错了)
总结
以上就是今天学习内容,本文仅仅介绍了路由以及路由参数类型,通过列举示例帮助理解各个参数类型之间的区别和用法。