flask教程05

19 篇文章 1 订阅

url路由

请求方式限定

使用 methods 参数指定可接受的请求方式,可以是多种

@app.route('/',methods=['GET'])
def hello():
    return '<h1>hello world</h1>'

路由查找方式

同一路由指向两个不同的函数,在匹配过程中,至上而下依次匹配


@app.route('/')
def hello():
    return '<h1>hello world</h1>'

@app.route('/')
def hello_2017():
    return '<h1>hello 2017</h1>'

所以上面路由 / 输出的结果为 hello 函数的结果

路由传参示例

有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数 来显示不同用户的个人信息。

从路由中提取url参数时需要使用flask中的路由转换器,所谓的路由转换器提取参数其实就是在进行url匹配过程中根据预先设定的 正则表达式来提取url地址中的某一部分作为参数,然后传递给对应的视图。

@app.route('/user/<int:id>')
def hello_itheima(id):
    return 'hello itcast %d' %id

反向解析生成url地址

如果需要动态生成视图对应的url地址,可以使用flask提供的url_for函数。

  from flask import url_for

  使用方式: url_for('视图函数名')

自定义路由转换器

在web开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,限制访问,优化访问

  • 导入转换器包
from werkzeug.routing import BaseConverter
  • 自定义转换器并实现
# 自定义转换器
class Regex_url(BaseConverter):
    def __init__(self,url_map,*args):
        super(Regex_url,self).__init__(url_map)
        self.regex = args[0]

app = Flask(__name__)
# 将自定义转换器类添加到转换器字典中
app.url_map.converters['re'] = Regex_url

@app.route('/user/<re("[a-z]{3}"):id>')
def hello_itheima(id):
    return 'hello %s' %id

自带几种转换器

DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值