路由

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

客户端(例如浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个 URL 到Python函数的映射关系。像这种处理URL和函数之间关系的程序称为路由。

在Flask程序中定义路由的最简便方式,是使用程序实例提供的app.route 修饰器,把修饰的函数注册为路由。下面的代码为使用修饰器声明路由的方法。

@app.route('/')

defhello_world():

return'Hello World!'

说明:修饰器是Python语言的标准特性,可以使用不同的方式修改函数的行为。常用方法是使用修饰器把函数注册为事件的处理程序。

(1)变量规则

要给 URL 添加变量部分,你可以把这些特殊的字段标记为<variable_name>, 这个部分将会作为命名参数传递到你的函数。规则可以用<converter:variable_name>指定一个可选的转换器。

实例02 根据参数输出相应信息

创建02文件夹,在该文件夹下创建add_params.py文件,以实例01代码为基础,添加如下代码:

from flask importFlask

app = Flask(name)

@app.route('/')

defhello_world():

return'Hello World!'

@app.route('/user/<username>')

defshow_user_profile(username):

显示该用户名的用户信息

return'User %s' % username

@app.route('/post/<int:post_id>')

defshow_post(post_id):

根据ID显示文章,ID是整型数据

return'Post %d' % post_id

ifname == 'main':

app.run(debug=True)

上述代码中使用了转换器,主要有下面几种:

l int:接受整数

l float:同int,但是接受浮点数

l path:和默认的相似,但也接受斜线

运行add_params.py文件,运行结果如图8和图9所示。

图8 获取用户信息

图9 获取文章信息

(2)构造 URL

当Flask匹配URL后,可以使用url_for()函数构造URL,在这个函数中,可以使用函数名作为第一个参数,也可以使用应用URL规则定义的变量名称作为参数。

实例03 使用url_for()函数获取URL信息

创建03文件夹,在该文件夹下创建url_for.py,以实例02为基础添加如下代码:

from flask importFlask , url_for

app = Flask(name)

@app.route('/')

defhello_world():

return'Hello World!'

@app.route('/user/<username>')

defshow_user_profile(username):

显示该用户名的用户信息

return'User %s' % username

@app.route('/url/')

defget_url():

根据ID显示文章,ID是整型数据

returnurl_for('show_post',post_id=2)

@app.route('/post/<int:post_id>')

defshow_post(post_id):

根据ID显示文章,ID是整型数据

return'Post %d' % post_id

ifname == 'main':

app.run(debug=True)

上述代码中,设置"/url/"路由,访问该路由时,返回"show_post"函数的URL信息。运行结果如图10所示。

图10 url_for()函数应用效果图

(3)指定HTTP 方法

HTTP(与Web应用会话的协议)有许多不同的访问URL方法。默认情况下,路由只响应GET请求,但是通过route()装饰器传递methods参数可以改变这个行为。代码如下:

importrequest

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

deflogin():

ifrequest.method == 'POST':

do_the_login()

else:

show_the_login_form()

HTTP方法(也经常被称作"谓词")通知服务器,即客户端对请求的页面所做的处理。常见的方法如表1所示。

表1 常用的HTTP方法及说明

|-----------|-----------------------------------------------------------------------------------------------------------------|
| 方 法 名 | 说 明 |
| GET | 浏览器通知服务器:将获取页面上的信息并发给浏览器 |
| HEAD | 浏览器通知服务器:获取信息,但是只关心消息头。应用应像处理GET请求一样来处理它,但是不分发实际内容。在Flask中你完全不需要人工干预,底层的Werkzeug库已经替你处理好了 |
| POST | 浏览器通知服务器:在URL上发布新信息。并且,服务器必须确保数据已存储且仅存储一次。这是 HTML 表单通常发送数据到服务器的方法 |
| PUT | 类似POST,但是服务器可能触发了存储过程多次,多次覆盖掉旧值。考虑到传输中连接可能会丢失,在这种情况下浏览器和服务器之间的系统可能安全地第二次接收请求,而不破坏其他东西。因为POST只触发一次,所以使用POST是不可能的 |
| DELETE | 删除给定位置的信息 |
| OPTIONS | 给客户端提供一个捷径来弄清这个 URL 支持哪些HTTP方法。从Flask 0.6开始,实现了自动处理 |

相关推荐
tang&1 天前
【Python自动化测试】Selenium常用函数详解
开发语言·python·selenium
卜锦元1 天前
Golang项目开发过程中好用的包整理归纳(附带不同包仓库地址)
开发语言·后端·golang
Tony Bai1 天前
“我曾想付钱给 Google 去工作”—— Russ Cox 深度访谈:Go 的诞生、演进与未来
开发语言·后端·golang
路边草随风1 天前
milvus向量数据库使用尝试
人工智能·python·milvus
newobut1 天前
vscode远程调试python程序,基于debugpy库
vscode·python·调试·debugpy
APIshop1 天前
用 Python 把“API 接口”当数据源——从找口子到落库的全流程实战
开发语言·python
serendipity_hky1 天前
【SpringCloud | 第2篇】OpenFeign远程调用
java·后端·spring·spring cloud·openfeign
嘟嘟MD1 天前
程序员副业 | 2025年11月复盘
后端·创业
SadSunset1 天前
(15)抽象工厂模式(了解)
java·笔记·后端·spring·抽象工厂模式
汝生淮南吾在北1 天前
SpringBoot+Vue养老院管理系统
vue.js·spring boot·后端·毕业设计·毕设