Flask 入门2:路由

1. 前言

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

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

python 复制代码
@app.route('/user/<username>')
def user(username):
    return 'User %s' % username

username 作为参数,传入 user() 函数当中。

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

3. Flask 提供了三种转换器

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

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

python 复制代码
from werkzeug.routing import BaseConverter

class 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. 比较友好的路由定义方式

python 复制代码
@app.route('/projects/')
def projects():
    return 'The project page'

路径后面加一个斜杠。

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

python 复制代码
@app.route('/works/')
@app.route('/projects/')
def projects():
    return 'The project page'

6. http方法

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

python 复制代码
@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 开始,实现了自动处理。

相关推荐
遇见你...1 天前
A01-Spring概述
java·后端·spring
代码匠心1 天前
从零开始学Flink:TopN 榜单
大数据·后端·flink·flink sql·大数据处理
lizhongxuan1 天前
Claude Code 防上下文爆炸:源码级深度解析
前端·后端
紫金修道1 天前
【DeepAgent】概述
开发语言·数据库·python
书到用时方恨少!1 天前
Python multiprocessing 使用指南:突破 GIL 束缚的并行计算利器
开发语言·python·并行·多进程
Warson_L1 天前
Python 常用内置标准库
python
Warson_L1 天前
Python 函数的艺术 (Functions)
python
Warson_L1 天前
Python 流程控制与逻辑
后端·python
糖炒栗子03261 天前
架构笔记:应用配置无状态化 (Statelessness)
后端
long_songs1 天前
手柄键盘映射器【github链接见文末 】
python·游戏·计算机外设·pygame·软件推荐·手柄映射键盘