Flask 入门2:路由

1. 前言

在上一节中,我们使用到了静态路由,即一个路由规则对应一个 URL。而在实际应用中,更多使用的则是动态路由,它的 URL是可变的。

2. 定义一个很常见的路由地址

@app.route('/user/<username>')
def user(username):return 'User %s' % username

username 作为参数,传入 user() 函数当中。
在这里插入图片描述

需要记住的是,在定义路由的参数名时一定要与定义函数的变量名一致,否则就会引发异常。

3. Flask 提供了三种转换器

  • int:整型;
  • float:浮点数;
  • path:路径。

虽不包含正则表达式,但是可以手动添加。

from werkzeug.routing import BaseConverterclass RegexConverter(BaseConverter):def __init__(self, url_map, *items):super(RegexConverter, self).__init__(url_map)self.regex = items[0]app.url_map.converters['regex'] = RegexConverter@app.route('/user/<regex("[a-z]{3}"):user_id>')
def user(user_id):return 'User %s' % user_id

这里代码块就添加了一个正则表达式,要求三个字符。

4. 比较友好的路由定义方式

@app.route('/projects/')
def projects():return 'The project page'

路径后面加一个斜杠。

5. 也可以多个定义,同时指向同一个页面

@app.route('/works/')
@app.route('/projects/')
def projects():return 'The project page'

6. http方法

在路由定义里面也同样包括 http 的方法,即 GET、POST 等。

@app.route('/login', methods=['GET', 'POST'])

常见的 http 方法:
GET:浏览器告知服务器,只获取页面上的信息并发送给我。这是最常用的方法。

POST:浏览器告诉服务器,想在 URL 上发布新消息。并且服务器必须确保数据已存储且仅存储一次。这是 HTML 表单通常发送数据到服务器的方法。

PUT:类似 POST,但服务器可能多次触发了存储过程,并且多次覆盖掉旧值。你可能会问这有什么用,当然这是有原因的。考虑到传输中连接可能会丢失,在这种情况下浏览器和服务器之间的系统可能安全地第二次接收请求,而不破坏其他东西。因为 POST 它只触发一次,所以用 POST 是不可能的。

DELETE:删除给定位置的信息。

HEAD:浏览器告诉服务器,欲获取数据,但是只关心消息头。应像 GET 请求一样来处理它,但是不分发实际内容。在 Flask 中你完全无需人工干预,底层的 Werkzeug 库已经帮你打点好了。

OPTIONS:给客户端提供一个敏捷的途径来弄清这个 URL 支持哪些 http 方法。从 Flask 0.6 开始,实现了自动处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442180.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试 35 个 webshell 检测引擎的查杀结果

最近发现了一个有意思的 使用分支对抗技术制作的 PHP Webshell 开源项目&#xff0c;共数十个查杀引擎免杀&#xff0c;项目地址&#xff1a;https://github.com/icewolf-sec/PerlinPuzzle-Webshell-PHP 什么是 Webshell Webshell 是一种恶意脚本&#xff0c;它能让攻击者通过…

C++ //练习 3.14 编写一段程序,用cin读入一组整数并把它们存入一个vector对象。

C Primer&#xff08;第5版&#xff09; 练习 3.14 练习 3.14 编写一段程序&#xff0c;用cin读入一组整数并把它们存入一个vector对象。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /***********************************…

前端基础-事件循环(消息循环)

这里写自定义目录标题 1. 浏览器进程主要的进程&#xff08;了解&#xff09; 2. 渲染主线程是如何工作的&#xff1f;3. 面试题&#xff1a;如何理解 JS 的异步&#xff1f;3. JS为何会阻碍渲染&#xff1f;4. 任务有优先级吗&#xff1f;5. 面试题&#xff1a;阐述一下 JS 的…

故障诊断 | 一文解决,BiLSTM双向长短期记忆神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现BiLSTM双向长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab) 支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,用于分类和回归分析。SVM的主要目标是找到一个最优的超平面(或者在非线性情况下是一个最优的超曲面),将不同类别的样本分开…

最全前端 HTML 面试知识点

一、HTML 1.1 HTML 1.1.1 定义 超文本标记语言&#xff08;英语&#xff1a;HyperTextMarkupLanguage&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言 HTML元素是构建网站的基石 标记语言&#xff08;markup language &#xff09; 由无数个…

云计算概述(云计算类型、技术驱动力、关键技术、特征、特点、通用点、架构层次)(二)

云计算概述&#xff08;二&#xff09; &#xff08;云计算类型、技术驱动力、关键技术、特征、特点、通用点、架构层次&#xff09; 目录 零、00时光宝盒 一、云计算类型&#xff08;以服务的内容或形态来分) 二、云计算的12种技术驱动力 三、云计算的关键技术 四、云计…

java spring cloud eureka 简单实验

1.概要 1.1 目标说明 注册中心是微服务管理服务的一个工具&#xff0c;这里以eureka为例先创建一个。目标就是让服务启动起来。 1.2 创建步骤 创建一个主工程&#xff0c;选项eureka创建一个子工程&#xff0c;实现服务 1.2 知识要点 SpringBootApplication EnableEurekaS…

使用Mysql实现Postgresql中窗口函数row_number的功能

1. 描述 需要根据用户id&#xff0c;查询每个人得分第二高的科目信息 2. 表结构及数据 2.1 表结构 CREATE TABLE t_score (id bigint(20) NOT NULL AUTO_INCREMENT,user_id bigint(20) NOT NULL,score double NOT NULL,subject varchar(100) NOT NULL,PRIMARY KEY (id) ) E…

51-21 Bird‘s-Eye-View,BEV 开山之作 LSS 论文精读

这以后阅读的论文逐渐靠近自动驾驶实用领域&#xff0c;本文要讲的是Birds-Eye-View&#xff0c;BEV开山之作&#xff0c;来自Nvidia的LSS论文。 LSS核心动机&#xff1a;2D-->3D&#xff0c;构建BEV空间。LSS核心结构首先是利用Lift模块进行深度分布学习&#xff0c;将二维…

哨兵1号回波数据(L0级)提取与SAR成像(全网首发)

本专栏目录:全球SAR卫星大盘点与回波数据处理专栏目录 本文先展示提取出的回波结果,然后使用RD算法进行成像,展示成像结果,最后附上哨兵1号回波提取的MATLAB代码。 1. 回波提取 回波提取得到二维复矩阵数据,对其求模值后绘图如下(横轴为距离向采样点,纵轴为方位向采样…

【HTML5·本地存储】

本地存储 本地存储是指在客户端存储数据&#xff0c;HTML5 为我们提供了两种 API&#xff0c;分别是 localStorage 与 sessionStorage&#xff0c;二者作为 HTML5 新增的特性&#xff0c;它们的使用方法类似&#xff0c;都可以用来存储客户端临时信息&#xff0c;并且二者存储…