软件测试|一文教你flask路由配置

简介: 软件测试|一文教你flask路由配置

flask路由配置

Flask中通过使用route装饰器实现路由访问功能,其路由匹配URL规则基于Werkzeug的路由模块。该模块基于Apache及更早的HTTP服务器主张,希望保证优雅且唯一的URL。其使用格式如下:

在这里插入图片描述

from flask import Flask
# 导入 Flask 类

app = Flask(__name__)
# 创建类的实例


@app.route("/hello")
# 使用 route() 装饰器来告诉 Flask 触发函数 的 URL
def hello_world():
    return "<p>Hello, World!</p>"


if __name__ == '__main__':
    app.run()

如上,可以通过访问:http://127.0.0.1:5000/hello.结果如下图所示:

在这里插入图片描述

URL规则

route装饰器基于Werkzeug规则实现,我们可以通过把URL的一部分标记为 <variable_name> 就可以在 URL 中添加变量,也可以通过使用<converter:variable_name>添加一个转换器来指定规则,支持的converter转换器类型如下:

  • string:接受任何没有斜杠 “/” 的文本(默认类型)
  • int:接受整数
  • float:接受浮点数
  • path:类似默认string,但也接受斜杠
  • uuid:只接受uuid字符串
  • any:可以指定多种路径,但是需要传入参数

示例代码如下:

from flask import Flask
from markupsafe import escape
app = Flask(__name__)

# URL没有尾部斜杠,访问这个URL就会得到一个 404
@app.route('/hello')  
def hello():
    return 'Hello, World'

# 访问没有斜杠结尾的URL时会自动进行重定向,帮您在尾部加上一个斜杠
@app.route('/projects/')
def projects():
    return '项目页面'

# path变量路由,支持get、post方法
@app.route('/user/<username>', methods=['GET', 'POST'])  
def profile(username):
    return f'{username}的个人页面'

# 指定path参数为int类型,如:/post/123
@app.route('/post/<int:post_id>')  
def show_post(post_id):
    return f'文章编号 {post_id}'

# 展示/path/之后的子路径地址
@app.route('/path/<path:subpath>')
def show_subpath(subpath):

    return f'子路径 {escape(subpath)}'

if __name__ == '__main__':
    app.run()

启动服务后,访问的记录如下图所示:

在这里插入图片描述

URL 构建

url_for()可以用于构建指定函数的URL,其使用格式:url_for(,dicts),且url_for会自动换衣特殊字符和unicode编码数据,而无需自己构建。

from flask import url_for,Flask
from markupsafe import escape
app = Flask(__name__)

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

@app.route('/getUserById')
def getUser(id):
    return f'当前用户Id:{id}'

@app.route('/user/<username>')
def user(username):
    return f'访问者:{username}'

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    return f'子路径 {escape(subpath)}'

with app.test_request_context():
    print(url_for('hello'))
    print(url_for('getUser',id=1000))
    print(url_for('user',username="穆勒"))
    print(url_for('show_subpath', subpath='subpath/b'))

运行结果如下图所示:

在这里插入图片描述

相关文章
|
19天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
20 1
|
2月前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
105 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
69 4
|
1月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
64 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
2月前
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (四):登录与权限控制
本文介绍了如何使用 Flask-Security 和 Flask-Login 实现权限管理和用户登录功能。首先讲解了 Flask 的消息闪现功能,用于向模板传递信息。接着介绍了如何利用 Flask-Security 的 `roles_required` 和 `roles_accepted` 装饰器保护页面,并展示了如何通过 `current_user` 获取当前用户信息。最后提到了使用 Flask-Login 时应避免升级至 0.4.0 版本,以防出现兼容性问题。通过这些技术,搭建了一个基本的用户权限管理系统。
104 6
测试开发之路--Flask 之旅 (四):登录与权限控制
|
2月前
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (五):后台管理
本文介绍了如何使用 Flask-Admin 模块为应用添加后台管理功能,包括数据库表管理、自定义视图及服务器文件管理。通过实例展示了如何初始化 Flask-Admin,并实现对用户、角色等表的增删查改操作。此外,还介绍了如何定制视图及管理服务器上的配置文件。这一模块大大提升了应用的管理效率与灵活性。
54 5
测试开发之路--Flask 之旅 (五):后台管理
|
2月前
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (三):数据库
本文介绍了在 Flask 应用中实现权限管理的过程,包括使用 Flask-SQLAlchemy、Flask-MySQLdb、Flask-Security 和 Flask-Login 等扩展模块进行数据库配置与用户权限设置。首先创建数据库并定义用户、环境和角色模型,接着通过 Flask-Security 初始化用户和角色,并展示了如何便捷地管理权限。后续将深入探讨权限控制的具体应用。
72 4
测试开发之路--Flask 之旅 (三):数据库
|
2月前
|
Linux
kickstart自动安装系统 --DHCP 配置及测试
PXE+Kickstart自动安装系统需配置DHCP服务器分配IP。dhcpd.conf示例:设置更新样式、忽略客户端更新、指定下一服务器及启动文件。定义子网、网关、掩码、动态地址池并预留特定MAC地址。重启xinetd、NFS、DHCP服务,确保新服务器与Kickstart服务器在同一网络,避免误装其他机器。注意隔离测试网络以防干扰生产环境。
80 18
|
1月前
|
中间件 网络架构 Python
三、Flask基本内容介绍之路由
三、Flask基本内容介绍之路由
27 0