【flask入门系列】处理请求之url 路径参数的获取以及转换器的使用

简介: 这节我们写一下url路径参数的获取以及转换器的使用,学一下如何在我们的的url路径中加参数以及如何使用转换器,并且自定义转换器。

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛。😜
  • 📝 博主的个人网站:阿牛的博客小屋🔥

前言

这节我们写一下url路径参数的获取以及转换器的使用,学一下如何在我们的的url路径中加参数以及如何使用转换器,并且自定义转换器。

url路径参数(动态路由)

例如,有一个请求访问的接口地址为/users/12,其中12实际上为具体的请求参数,表明请求12号用户的信息。此时如何从 url 中提取出12的数据?
Flask不同于Django直接在定义路由时编写正则表达式,而是采用转换器语法:

#导入Flask类和蓝图
from flask import Flask,Blueprint

# 从配置对象中加载的默认配置
class DefaultConfig(object):
    SECERT_KEY = 'jstwn63bng'

# 创建Flask项目的工厂函数
def create_flask_app(config):
    app = Flask(__name__)
    app.config.from_object(config)
    return app

#1.创建一个蓝图对像
user_Bp = Blueprint('user',__name__)

#2.在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模板过滤器
@user_Bp.route('/users/<user_id>')
def user(user_id):
    return "我是" + user_id + "号"
#3.在应用对象上注册这个蓝图对象
app.register_blueprint(user_Bp)

代码中的<>即是一个转换器,默认为字符串类型,即将该位置的数据以字符串格式进行匹配,并以字符串为数据类型,user_id为参数名传入视图。

采用flask新的运行方式,在当前项目的终端输入:flask run指令,项目成功运行
在这里插入图片描述

在这里插入图片描述

转换器的使用

上面代码中的<>是一个转换器,默认为字符串类型,但是我们的Flask也提供其他类型的转换器:

转换器字典:

DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}

将上面的例子以整型匹配数据,可以如下使用:

@user_Bp.route('/users/<int:user_id>')

在这里插入图片描述

自定义转换器

如果遇到需要匹配提取/sms_codes/18543622578 中的手机号数据,Flask内置的转换器就不行了,此时就需要自定义转换器。

定义转换器
自定义转换器主要做3步
1.创建转换器类,保存匹配时的正则表达式

from werkzeug.routing import BaseConverter

class MobileConverter(BaseConverter):
    #手机号格式
    # 注意:regex名字固定
    regex = r'1[3-9]\d{9}'

注意:regex名字固定
2.将自定义的转换器告知Flask应用

app = Flask(__name__)

# 将自定义的转换器添加到转换器字典中,并指定转换器使用时的名字为:mobile
app.url_map.converters['mobile'] = MobileConverter

3.在使用转换器的地方定义使用

@app.route('/sms_codes/<mobile:phone_num>')
def sms_code(phone_num):
    return 'send sms_code to {}'.format(phone_num)

示例

#导入Flask类
from flask import Flask
from werkzeug.routing import BaseConverter

class MobileConverter(BaseConverter):
    #手机号格式
    # 注意:regex名字固定
    regex = r'1[3-9]\d{9}'

app = Flask(__name__)

# 将自定义的转换器添加到转换器字典中,并指定转换器使用时的名字为:mobile
app.url_map.converters['mobile'] = MobileConverter

@app.route('/sms_codes/<mobile:phone_num>')
def sms_code(phone_num):
    return 'send sms_code to {}'.format(phone_num)

在这里插入图片描述

结语

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

相关文章
|
2月前
|
前端开发 JavaScript 数据库连接
一、Flask入门介绍
一、Flask入门介绍
47 1
|
2月前
|
JSON 中间件 数据格式
五、Flask的请求和响应方法与常用技巧
五、Flask的请求和响应方法与常用技巧
100 0
|
3月前
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
5月前
|
缓存 网络协议 Java
(六)网络编程之化身一个请求感受浏览器输入URL后奇妙的网络之旅!
在浏览器上输入一个URL后发生了什么? 这也是面试中老生常谈的话题,包括网上也有大量关于这块的内容。
151 2
|
4月前
|
数据采集 人工智能 监控
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
|
5月前
|
缓存 安全 Web App开发
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
|
5月前
|
JSON 文字识别 数据格式
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
|
6月前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
103 5
|
6月前
|
JSON API 数据格式
如何使用Flask request对象处理请求
在 Flask 中,request对象是处理 HTTP 请求的重要工具之一。它提供了许多属性和方法,可以帮助我们获取请求的相关信息和数据。本文将向你介绍request对象的常用方法以及如何在 Flask 应用程序中使用它。
136 3
|
5月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
306 0