(八)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就可以正常登录了 重新登录测试就正常了...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
