flask的url变量问题

可以通过标记部分向URL添加变量部分 <variable_name>。然后,视图函数将接收<variable_name> 作为关键字参数。(可选)您可以使用转换器指定参数的类型<converter: variable_name>。
格式:<converter: variable_name>
converter是转换器,可以指定变量的类型,也可以不指定,如果不指定的话,默认变量是string类型
例子:

@app.route('/user/<username>')
def user(username):
    print(username)
    print(type(username))
    return username

在这里插入图片描述
在这里插入图片描述
flask提供的转换器有七个

#: the default converter mapping for the map.
DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}

测试一下int类型

@app.route('/user/<int:userid>')
def user(userid):
    print(userid)
    print(type(userid))
    # 因为是int类型,所以返回时要先转换成string
    return str(userid)

在这里插入图片描述
如果输入一个不是int类型的变量则无法访问
在这里插入图片描述
在这里插入图片描述
如果想要一个自定义变量的格式也是可以实现的

# 自定义转换器
class MyConverter(BaseConverter):
    def __init__(self, param, *args):
        # args接受url传递的变量规则
        super().__init__(param)
        self.regex = args[0]


# 使用自定义的转换器,自定义规则的名称为re
app.url_map.converters['re'] = MyConverter

在url中使用
通过正则匹配一个三位数的变量,但是此时变量的类型是string类型

@app.route('/converter/<re("[\d]{3}"):params>')
def myconvert(params):
    print(params)
    print(type(params))
    return params

在这里插入图片描述
在这里插入图片描述
试试非法的变量
在这里插入图片描述
最后说一下url的查询字符串的获取,也就是url的“?”后面的一串参数

@app.route('/')
def index():
    print(request.args)
    print(request.args.get('ko'))
    print(request.args['ko'])
    return "hello flask"

输入url
http://127.0.0.1:5000/?hello=flask&ko=ok&name=xiaowang&age=12
后台获取
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值