(八)Flask之app.route装饰器函数的参数
app.route参数
app.route()是Flask框架中用于定义路由的装饰器函数,它接受一些参数来指定路由的URL规则、请求方法等。
app.route()参数如下:
-
rule(必选):定义URL规则的字符串,表示要匹配的URL路径。可以包含动态部分,使用尖括号(< >)来指定动态部分的名称和类型。例如:/user/<username>。 -
view_func(必选):用于指定将要执行的视图函数,即处理请求的函数。它接受一个函数作为值。这个函数通常是一个Flask应用程序中定义的视图函数,用于处理路由匹配后的请求。例如:
@app.route('/index') def index():return 'Hello, World!'在这个例子中,
view_func就是index函数,它会在匹配到/index路径时被调用。通过将视图函数传递给view_func参数,我们可以将路由和视图函数关联起来,以便在匹配到相应的URL规则时执行相应的视图函数。 -
methods(可选):定义允许的HTTP请求方法。可以是一个字符串或一个包含多个字符串的列表。默认情况下,允许GET请求。例如:methods=['GET', 'POST']。 -
endpoint(可选):为路由定义一个唯一的端点名称,用于反向生成URL,即: url_for(‘名称’)。如果未指定,默认使用视图函数的名称。例如:endpoint='index'。 -
defaults(可选):为动态部分提供默认值,以便在没有提供相应值时使用。默认值是一个字典。例如:defaults={'page': 1}。在Flask中,我们可以使用尖括号(
< >)来定义动态路由部分,例如<username>。这样的路由规则可以匹配不同的URL路径,其中动态部分的值会作为参数传递给视图函数进行处理。然而,有时候在处理请求时可能没有提供相应的动态部分值,或者我们希望在没有提供值时使用一些默认值。这时,就可以使用
defaults参数来指定默认值。defaults参数接受一个字典作为值,字典的键是动态路由部分的名称,值是对应的默认值。当没有提供对应动态部分的值时,Flask将使用默认值来替代。举例:
@app.route('/user/<username>', defaults={'username': 'GuHanZhe', 'page': 1}) def user_profile(username, page):return f"Username: {username}, Page: {page}"在上面的示例中,我们定义了一个路由规则
/user/<username>,并为其中的动态路由部分username提供了默认值:GuHanZhe。同时,我们还添加了一个名为page的动态路由部分,并通过defaults参数为其提供了默认值为1。当访问
/user/johndoe时,username参数将被设置为johndoe,而page参数将使用默认值1。因此,视图函数user_profile将返回"Username: johndoe, Page: 1";如果提供了
page参数,例如访问/user/johndoe?page=2,则page参数将被设置为2,并覆盖默认值。所以,视图函数将返回"Username: johndoe, Page: 2"。通过使用
defaults参数,我们可以方便地为动态路由部分提供默认值,以应对没有提供相应值的情况。 -
host(可选):限制路由只匹配特定的主机名。例如:host='example.com'。 -
strict_slashes(可选):控制是否严格匹配URL末尾的斜杠。默认情况下,路由规则对URL末尾的斜杠是不敏感的,即此参数值为False。这意味着/user和/user/被视为相同的URL路径,并且可以匹配到同一个路由规则,但可以通过设置为True来禁用这个行为。例如:strict_slashes=True,这样Flask将不会自动处理URL末尾的斜杠。这意味着/user和/user/被视为不同的URL路径,需要分别定义对应的路由规则才能匹配到。 -
subdomain(可选):限制路由只匹配特定的子域名。可以是一个字符串或一个包含多个字符串的列表。例如:subdomain='api'。 -
redirect_to(可选):如果设置为另一个URL,会将请求重定向到该URL。例如:redirect_to='/new-url'。
这些参数可以根据需要进行组合使用,以定义具体的路由规则。通过使用这些参数,可以创建出符合需求的路由规则,并将它们与相应的视图函数关联起来。
redirect_to=None, 重定向到指定地址如:@app.route('/index/<int:nid>', redirect_to='/home/<nid>')或def func(adapter, nid):return "/home/888"@app.route('/index/<int:nid>', redirect_to=func)subdomain=None, 子域名访问
defaults参数举例:
from flask import Flaskapp = Flask(__name__)@app.route('/index', defaults={'nid': 'xxx'})
def index(nid):print(nid)return 'Index'if __name__ == '__main__':app.run('localhost', 4000)
redirect_to举例:
from flask import Flaskapp = Flask(__name__)@app.route('/index', redirect_to='/new')
def index(nid):print(nid)return '老功能'@app.route('/new')
def new():return '新功能'if __name__ == '__main__':app.run('localhost', 4000)
subdomain举例:
在 Flask 中,路由的 subdomain 参数可以用于匹配 URL 中的子域名,其中子域名是 URL 中域名部分的前缀。例如,blog.example.com 中的子域名是 blog,而父域名是 example.com。
下面是使用子域名参数的 Flask 路由示例:
from flask import Flaskapp = Flask(__name__)@app.route('/', subdomain='www')
def index():return 'Welcome to the main site!'@app.route('/', subdomain='blog')
def blog():return 'Welcome to the blog!'if __name__ == '__main__':app.run()
在上面的代码中,我们定义了两个路由函数 index() 和 blog(),它们分别为主域名和子域名设置了路由。其中,subdomain 参数指定了路由函数应该匹配的子域名。
如果我们访问主域名 http://www.example.com/,Flask 会将请求路由到 index() 视图函数,而子域名 http://blog.example.com/ 的请求则会被路由到 blog() 视图函数。
需要注意的是,为了使用子域名参数,我们需要在部署 Flask 应用程序时配置 DNS 服务器或负载均衡器,使其将子域名指向正确的服务器。在本地开发环境中,我们可以在系统的 hosts 文件(windows系统这个文件路径:C:\Windows\System32\drivers\etc)中添加一条域名映射,实现子域名的模拟。
总之,使用 Flask 的 subdomain 参数可以为应用程序添加更加灵活和精细的路由规则,提升应用程序的可用性和用户体验。
相关文章:
(八)Flask之app.route装饰器函数的参数
app.route参数 app.route()是Flask框架中用于定义路由的装饰器函数,它接受一些参数来指定路由的URL规则、请求方法等。 app.route()参数如下: rule(必选):定义URL规则的字符串,表示要匹配的URL路径。可以…...
ES6.8集群配置注意点
x-pack配置 当启用xpack.security.enabled时,确保集群中的所有节点都配置了此项,并确保所有节点都已重启。如果只有部分节点启用安全性,那么集群可能会遇到问题。 设置密码 使用elasticsearch-setup-passwords工具设置密码时,确保…...
Powercli批量修改分布式交换机端口组
背景 需求: 批量修改虚拟机的分布式端口组 解决方式一: 三条命令解决:先获取目标虚拟机、获取目标端口组、修改虚拟机端口组、检查虚拟机状态。 $vm Get-VM -Name <虚拟机名称> $portGroup Get-VirtualPortGroup -Name <端口…...
ZKP10.2 Efficient Recursion via Statement Folding (Nova)
ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 10: Recursive SNARKs, Aggregation and Accumulation (Dan Boneh) 10.3 Efficient Recursion via Statement Folding: Nova, Supernova, and generalizations The difficulty with full recursion Prover P needs to build a…...
高浓度cod废水怎么处理
高浓度COD废水的处理方法主要有物理法、生物法和化学法。 物理法:一般通过加入絮凝剂,利用絮凝剂的吸附、电中和等作用将水中的颗粒物结团沉降下去,从而达到去除部分来自颗粒物的COD。此方法基本上只对浓度上万、上千的COD起作用,…...
Docker学习——②
文章目录 1、Docker是什么1.1 Docker本质1.2 Docker的引擎迭代1.3 Docker和虚拟机的区别1.4 Docker 为什么比虚拟机资源利用率高,启动快?1.5 Docker 和 JVM 虚拟化的区别? 2、Docker架构3、Docker生态3.1 新时代软件诉求3.2 Docker 解决方案 …...
VSCode 设置平滑光标
1.点击左下角的设置按钮,再点击设置 2.点击文本编辑器,点击光标,勾选控制是否启用平滑插入动画。 3.随便打开一个文件,上下左右移动光标时,会发现非常的流畅。 原创作者:吴小糖 创作时间:2023…...
Spring、SpringMVC、Mybatis
一.Spring基础 1.Spring 框架是什么 Spring 是一款开源的轻量级 Java 开发框架,我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,例如,Spring core、Spring JDBC、Spring MVC 等,使用这些模块可…...
Kubernetes 架构
Kubernetes 架构 Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提…...
python---数据类型(列表)
组织列表 使用sort()方法对列表永久性排序 按照字母顺序排序: motorcycles [chunlan, yamaha, dayun, jianshe]motorcycles.sort()print(motorcycles) 字母倒序: motorcycles [chunlan, yamaha, dayun, jianshe]motorcycles.sort(reverseTrue)pri…...
CentOS 7升级gcc/G++版本
Centos 7默认gcc版本为4.8,有时需要更高版本,只需要执行几条命令,无需下载源码编译编译。 安装centos-release-scl sudo yum install centos-release-scl 安装devtoolset sudo yum install devtoolset-8-gcc* 注意,如果想安装…...
uni-app开发微信公众号 H5打开扫一扫功能
<!--引入微信sdk--> <script src"http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>let url location.href.split(#)[0];newApi.getSignature({ url }).then(res > {if (res.code 0) {this.sdk.config({beta: true, // 必须这么写&a…...
k8s-服务网格实战-入门Istio
istio-01.png 背景 终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了: 如何部署应用到 kubernetes服务之间如何调用如何通过域名访问我们的服务如何使用 kubernetes 自带的配置 ConfigMap 基本上已经够我们开发一般规模的 web 应用了…...
金属压铸件自动化3D全尺寸测量设备自动外观检测三维检测-CASAIM
铸造作为现代装备制造工业的基础共性技术之一,铸件产品既是工业制造产品,也是大型机械的重要组成部分,被广泛运用在航空航天、工业船舶、机械电子和交通运输等行业。 铸件形状复杂,一般的三坐标或者卡尺圆规等工具难以获取多特征…...
Android笔记(十):结合Navigation组件实现Compose界面的导航
在Android笔记(七)搭建Android JetPack Compose组件中Scaffold脚手架 一文中通过定义一个导航的函数来实现不同界面的切换。如果没有传递任何参数,这样的导航处理也是可以接受的,处理方式也非常简单。但是,如果考虑到不…...
linux内核tcp配置--断网后连接卡住
通过隐藏通信应用程序中的临时网络中断,TCP 可以在偶尔不可靠的网络上提供可靠的通信。在通知发件人任何问题之前,您的操作系统将多次重发丢失的消息。大多数 Linux 发行版默认将任何丢失的数据包重传 15 次。重新传输以指数方式回退,因此这 …...
Apache Pulsar 在腾讯云上的最佳实践
导语 由 StreamNative 主办的 Pulsar Meetup Beijing 2023 在2023年10月14日完美落幕,本次活动大咖云集,来自腾讯、滴滴、华为、智联招聘、RisingWave 和 StreamNative 的行业专家们一起,深入探讨 Pulsar 在生产环境中的最佳应用实践&#x…...
VMware 虚拟机安装 CentOS 7
CentOS 7 1. 下载CentOS 7 iso镜像 Index of /centos/7.9.2009/isos/x86_64/ 2. Vmware安装CentOS 7 安装教程: 超详细VMware CentOS7(最小安装)安装教程_虚拟机最小化安装-CSDN博客 【精选】VMware 安装 Centos7 详细过程_vm虚拟机安装centos7_expectation Fu…...
UnityAI——个体AI角色的操控行为脚本
注:本文用到了前文所用的基类UnityAI——操控行为编程的主要基类-CSDN博客 在一些游戏中,可能会遇到想让AI角色追逐或者避开玩家的情况。 如在飞机模拟游戏中,让导弹跟踪和进攻玩家或玩家的飞行器。这种情况下,可以运用本节介绍…...
ssh登录界面变成vim提示,进不去系统
是ubuntu系统 使用远程连接root,进去后发现界面变成vim编辑器的介绍界面了 使用普通用户登录 查询用户的登录shell是不是有问题 sudo vim /etc/passwd 发现用户shell变成了vim编辑器 修改为/bin/bash就可以正常登录了 重新登录测试就正常了...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
