路由

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

相关推荐
努力的家伙是不讨厌的10 分钟前
解析json导出csv或者直接入库
开发语言·python·json
齐 飞31 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
云空32 分钟前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
LunarCod1 小时前
WorkFlow源码剖析——Communicator之TCPServer(中)
后端·workflow·c/c++·网络框架·源码剖析·高性能高并发
神仙别闹1 小时前
基于tensorflow和flask的本地图片库web图片搜索引擎
前端·flask·tensorflow
凤枭香1 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
码农派大星。1 小时前
Spring Boot 配置文件
java·spring boot·后端
测试杂货铺1 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
艾派森1 小时前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
小码的头发丝、2 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django