【Flask】 路由入门

为了给 URL 增加变量的部分,你需要把一些特定的字段标记成 <variable_name>

这些特定的字段将作为参数传入到你的函数中,当然也可以指定一个可选的转换器通过规则

<converter:variable_name> 将变量值转换为特定的数据类型。

转换器的主要类型如下:

| 类型 | 含义 |

| — | — |

| string | 默认的数据类型,接受没有任何斜杠“/”的字符串 |

| int | 接受整型 |

| float | 接受浮点类型 |

| path | 和 string 类似,但是接受斜杠“/” |

| uuid | 只接受 uuid 字符串 |

from flask import Flask

app = Flask(name)

String 类型

@app.route(‘/user/’)

def show_user(username):

return ‘User: {}’.format(username)

int 类型

@app.route(‘/page/int:id’)

def show_page(id):

return ‘Page: {}’.format(id)

path 类型

@app.route(‘/path/path:subpath’)

def show_path(subpath):

return ‘Path: {}’.format(subpath)


[](()唯一URLs/重定向行为

===========================================================================

Flask 的 URL 规则是基于 Werkzeugrouting 模块

该模块背后的思路是基于 Apache 和早期的 HTTP 服务器定下先例确保优雅和唯一的 URL

以这两个规则为例

@app.route(‘/projects/’)

def projects():

return ‘The project page’

@app.route(‘/about’)

def about():

return ‘The about page’

虽然它们看起来确实相似,但它们结尾斜线的使用在 URL 定义中不同。

  • 第一种情况

规范的 URL 指向 projects 尾端有一个斜线 / 。这种感觉很像在文件系统中的文件夹。访问一个结尾不带斜线的 URL 会被 Flask 重定向到带斜线的规范 URL 去。

当访问 https://xxx/projects/ 时,页面会显示 The project page

  • 第二种情况

URL 结尾不带斜线,类似 UNIX-like 系统下的文件的路径名。此时如果访问结尾带斜线的 URL 会产生一个 404 “Not Found” 错误。

当访问 https://xxx/about 时,页面会显示 The about page

但是当访问 https://xxx/about/ 时,页面就会报错 Not Found

当用户访问页面忘记结尾斜线时,这个行为允许关联的 URL 继续工作,并且与 Apache 和其它的服务器的行为一致,反之则不行,因此在代码的 URL 设置时斜线只可多写不可少写

另外,URL 会保持唯一,有助于避免搜索引擎索引同一个页面两次。


[](()HTTP方法

=====================================================================

HTTP (也就是 Web 应用协议) 有不同的方法来访问 URLs 。

默认情况下,路由只会响应 GET 请求,但是能够通过给 route() 装饰器提供 methods 参数来改变。

from flask import Flask, request

app = Flask(name)

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

def login():

if request.method == ‘GET’:

return “–注册页面–”

else:

return “–注册API–”

如果使用 GET 方法,HEAD 方法将会自动添加进来。你不必处理它们。

也能确保 HEAD 请求会按照 HTTP RFC (文档在 HTTP 协议里面描述) 要求来处理,因此你完全可以忽略这部分 HTTP 规范。

同样地,自从 Flask 0.6 后,OPTIONS 方法也能自动为你处理。

HTTP方法(通常也称为“谓词”)告诉服务器客户端想要对请求的页面做什么。

下面这些方法是比较常见的:

  • GET

浏览器通知服务器只获取页面上的信息并且发送回来。这可能是最常用的方法。

  • POST

浏览器通知服务器它要在 URL 上提交一些信息,服务器必须保证数据被存储且只存储一次。这是 HTML 表单通常发送数据到服务器的方法。

  • PUT

同 POST 类似,但是服务器可能触发了多次存储过程多次覆盖掉旧值

现在你就会问这有什么用,有许多理由需要如此去做。

考虑下在传输过程中连接丢失:在这种情况下浏览器和服务器之间的 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 系统可能安全地第二次接收请求,而不破坏其它东西。该过程操作 POST 方法是不可能实现的,因为它只会被触发一次。

  • HEAD

浏览器告诉服务器获取信息,但是只对头信息感兴趣,不需要整个页面的内容。

应用应该处理起来像接收到一个 GET 请求但是不传递实际内容。在 Flask 中你完全不需要处理它,底层的 Werkzeug 库会为你处理的。

  • DELETE

移除给定位置的信息。

  • OPTIONS

给客户端提供一个快速的途径来指出这个 URL 支持哪些 HTTP 方法。从 Flask 0.6 开始,自动实现了该功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值