路由

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

相关推荐
醒过来摸鱼几秒前
Java Compiler API使用
java·开发语言·python
Java水解15 分钟前
Dubbo跨机房调用实战:从原理到架构的完美解决方案
后端·dubbo
superman超哥18 分钟前
仓颉语言中字符串常用方法的深度剖析与工程实践
开发语言·后端·python·c#·仓颉
癫狂的兔子28 分钟前
【BUG】【Python】精确度问题
python·bug
AskHarries29 分钟前
Claude CLI 使用指南(Step by Step)
后端·ai编程
想学后端的前端工程师33 分钟前
【Spring Boot微服务开发实战:从入门到企业级应用】
java·开发语言·python
刺客xs33 分钟前
TCP网络通信
网络·网络协议·tcp/ip
q_191328469534 分钟前
基于Springboot+Vue.js的工业人身安全监测系统
vue.js·spring boot·后端·mysql·计算机毕业设计·串口通讯
阿杰AJie36 分钟前
安装 docker.io(不走外网 Docker 域名)
后端·docker
ShineSpark43 分钟前
eventpp 全面教程(从入门到实战)
c++·后端