Flask——路由定义的基本方式

本文介绍了如何使用Flask框架限制HTTP请求方式,如通过`methods`参数设定`GET`和`POST`。同时,详细讲解了路由参数的使用,包括通过`<order_id>`定义动态路由并展示如何处理不同类型的参数,如字符串和整型。通过示例展示了如何在Postman中测试这些API,并提到了转换器的作用,如`<int:order_id>`确保接收到整型参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引:采用postman进行测试

一、请求方式限定

使用methods参数指定可接受的请求方式,默认只支持get请求

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

可以看到若为

@app.route('/')

 在postman中选择get请求可以看到结果,而post请求失败。因此需要通过methods参数指定可接受的请求方式。

二、路由参数处理

有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的订单信息。

#使用同一个视图函数来显示不同用户的订单信息
#<>定义路由参数,<>内需取名字
@app.route('/order/<order_id>')
def get_order_id(order_id):
    #需要在视图函数中传参
    return 'order_id %s' % order_id

【若输入107.0.0.1:5000/order/666 则可以看到网页中显示了 order_id 666】

说明参数666通过链接http://107.0.0.1:5000/order/666传给函数get_order_id,然后输出在网页上。

<>中的参数默认是string

如果需要对路由进行访问优化,规定类型,怎么办呢?<int:order_id>即可,会调用系统的路由转换器进行匹配和转换,这样当输入http://107.0.0.1:5000/order/aaa时,无法显示aaa,只有整型才能输出。

转换器类型

转换器说明
string(缺省值) 接受任何不包含斜杠的文本
int接受正整数
float接受正浮点数
path类似 string ,但可以包含斜杠

前置笔记:

Flask安装与环境配置_LarsGyonX的博客-优快云博客

第一个flask程序_LarsGyonX的博客-优快云博客

### Python Flask 框架路由使用教程 #### 创建Flask应用对象 为了开始构建基于Flask的应用程序,首先要创建一个`Flask`类的对象。这可以通过传递模块名给构造函数完成,通常是通过双下划线属性`__name__`实现。 ```python from flask import Flask app = Flask(__name__) ``` 此操作初始化了一个名为`app`的Flask应用程序实例[^2]。 #### 定义基本路由Flask中,路由负责将特定URL模式与视图函数关联起来。最简单的方式是利用装饰器`@app.route()`来指定路径以及对应的处理逻辑: ```python @app.route('/') def index(): return 'Hello, Flask!' ``` 上述代码片段设置了一条根目录(`/`)到`index`函数间的映射关系;当访问网站主页时会返回字符串'Hello, Flask!'作为响应内容。 #### 添加带有变量的动态路由 除了静态页面外,还可以设计更灵活多变的链接结构——即支持参数化的URI模板。这些参数可以在请求到达服务器端之后被提取出来并传入目标方法内部供进一步处理。常见的几种可选数据类型包括但不限于整数(int),浮点数(float),通用字符序列(string)等。 ```python @app.route('/user/<string:username>') def show_user_profile(username): # 显示用户名为 username 的用户资料页 return f'User {username}' @app.route('/post/<int:post_id>') def show_post(post_id): # 展示编号为 post_id 的文章详情 return f'Post {post_id}' ``` 这里定义了两个新的路由规则:一个是接收任意长度字母组成的用户名部分(`/user/<string:username>`), 另一个则是仅限于正整数值的文章ID字段(`/post/<int:post_id>`)。每当有匹配该形式的HTTP GET请求到来之时,相应的方法就会被执行并将捕获到的实际值当作实参传递进去[^1]。 #### 处理多种HTTP请求方式 默认情况下,所有的路由都只监听GET类型的网络通信动作。然而,在实际开发过程中往往还需要考虑到POST、PUT或者其他标准协议里所规定的交互手段。为此,只需向装饰符内追加额外的关键字参数即可满足需求: ```python @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': return do_the_login() else: return show_the_login_form() def do_the_login(): pass # 实现登录业务逻辑 def show_the_login_form(): pass # 渲染显示登录表单界面 ``` 这段示范展示了如何区分对待不同种类的消息发送行为,并据此采取不同的应对措施。特别是对于那些涉及敏感信息交换的操作而言(比如身份验证),确保采用恰当的安全机制至关重要。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值