【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)

在这里插入图片描述

结语

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

相关文章
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
639 7
|
前端开发 JavaScript 数据库连接
一、Flask入门介绍
一、Flask入门介绍
536 1
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
JSON 中间件 数据格式
五、Flask的请求和响应方法与常用技巧
五、Flask的请求和响应方法与常用技巧
554 0
|
JSON 文字识别 数据格式
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
|
JSON API 数据格式
如何使用Flask request对象处理请求
在 Flask 中,request对象是处理 HTTP 请求的重要工具之一。它提供了许多属性和方法,可以帮助我们获取请求的相关信息和数据。本文将向你介绍request对象的常用方法以及如何在 Flask 应用程序中使用它。
471 3
|
数据库连接 Python
Flask 框架入门与实践:构建你的第一个 Web 应用
【5月更文挑战第18天】本文介绍了使用 Flask 框架构建第一个 Web 应用的步骤。首先通过 `pip install Flask` 安装框架,然后编写基本的 Python 代码创建应用,包括定义路由和响应。示例展示如何显示 &quot;Hello, World!&quot;,并扩展到显示用户信息的功能。利用模板(如 `index.html`)可使页面更丰富。随着学习深入,可以利用 Flask 的更多特性,如表单处理和数据库连接,来构建更复杂的 Web 应用。本文旨在激发读者对 Flask 和 Web 开发的兴趣,鼓励不断探索和实践。
455 7
|
网络架构 Python
在Flask中,如何定义路由并处理HTTP请求的不同方法(GET、POST等)?
【4月更文挑战第25天】在Flask中,使用`@app.route()`装饰器定义路由,如`/hello`,处理GET请求返回&#39;Hello, World!&#39;。通过添加`methods`参数,可处理不同HTTP方法,如POST请求。单一函数可处理多种方法,通过检查`request.method`区分。动态路由使用 `&lt;variable_name&gt;` 传递URL变量到视图函数。这些基础构成处理HTTP请求的Flask应用。
517 1
|
JSON 数据格式 Python
如何在Flask框架中定义路由和处理请求?
【4月更文挑战第18天】在Flask框架中,创建应用实例、定义路由和处理请求涉及5个步骤:1) 导入Flask并实例化应用;2) 使用`app.route()`装饰器定义路由,指定URL和HTTP方法;3) 编写视图函数处理请求逻辑;4) 视图函数返回响应内容,Flask会自动转换格式;5) 用`app.run()`启动服务器。
389 3
|
存储 JSON 数据安全/隐私保护
Flask Python:如何获取不同请求方式的参数
Flask Python:如何获取不同请求方式的参数
1158 0