路由

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

相关推荐
小码哥_常6 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
代码山河9 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
明天也要努力学习9 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
在世修行9 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
学长毕设9 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
听风说ml9 小时前
socket编程 【C语言】
c语言·udp·tcp·socket编程
梯度下降者9 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”11 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
努力的小雨11 小时前
给 AI 眼镜开发应用有多难?我从零做了一个陪练,还上架了
后端
benchmark_cc12 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash