路由

自学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开始,实现了自动处理 |

相关推荐
大数据小朋友5 分钟前
Pand函数详解进阶:案例解析(第26天)
大数据·开发语言·数据仓库·python·pandas
passion更好15 分钟前
Modbus通信协议学习——调试软件
python
傻啦嘿哟17 分钟前
TensorFlow与PyTorch的对比与选择(Python深度学习)
python·深度学习·tensorflow
赵孝正28 分钟前
python对含数字的列名排序和去重
前端·javascript·python
SongYuLong的博客33 分钟前
python遍历目录下所有文件
前端·数据库·python
阿福不是狗35 分钟前
Python使用总结之应用程序有哪些配置方式?配置方式对比
linux·服务器·python
engchina35 分钟前
Python缓存利器:cachetools库详解
python·缓存·cachetools
fenghuo_yuanma41 分钟前
如何在IIS6,7中部署ASP.NET网站
后端·asp.net·网站部署
andylauren1 小时前
Hi3861 OpenHarmony嵌入式应用入门--UDP Server
udp·openharmony
Mr.D学长1 小时前
竞赛选题 YOLOv7 目标检测网络解读
java·python