Flask路由机制详解:从基础到进阶
创作时间:
作者:
@小白创作中心
Flask路由机制详解:从基础到进阶
引用
CSDN
1.
https://m.blog.csdn.net/naihe_fish/article/details/143274694
Flask是一个轻量级的Web应用框架,提供了简单而强大的路由机制,使得开发者能够轻松地将用户请求的URL映射到Python函数。本文将详细介绍Flask中的路由机制,包括基本路由、动态路由、HTTP方法处理以及路由函数的返回类型等内容。
什么是路由?
在Web应用中,路由决定了用户请求的URL应该由哪个函数来处理。当用户在浏览器中输入一个URL或者点击一个链接时,Web服务器需要知道如何处理这个请求,这就是路由的作用。
Flask中的路由
Flask使用装饰器@app.route()
来定义路由。这个装饰器告诉Flask哪个URL应该触发对应的函数。
基本路由
最基本的路由是将URL直接映射到函数。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, Flask!'
if __name__ == '__main__':
app.run(debug=True)
在上面这个例子中,我们定义了一个路由/
,当用户访问应用的根目录时,会触发home
函数,并返回字符串"Hello, Flask!"。
动态路由
Flask还允许我们定义动态路由,即URL中包含变量的部分。
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post {post_id}'
在这两个例子中,<username>
和<int:post_id>
是动态部分,Flask会将URL中对应的部分作为参数传递给函数。<username>
可以匹配任何字符串,而<int:post_id>
则限制只能匹配整数。
测试结果如下
路由规则支持不同类型的参数和匹配规则,post_id前的int为路由规则的类型,以下为常见的路由规则:
- 字符串(默认): 匹配任意字符串。
- 整数(int:name): 匹配整数值。
- 浮点数(float:value): 匹配浮点数值。
- 路径(path:name): 匹配任意字符,包括斜杠/。
路由中的HTTP方法
默认情况下,路由只响应GET请求。Flask允许我们指定路由响应特定的HTTP方法。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
上面的例子中,/login
路由可以响应GET和POST请求。根据请求的方法,执行不同的函数。测试结果如下。
路由函数返回
视图函数可以返回多种类型的响应:
- 字符串:返回纯文本响应。
- HTML:返回 HTML 页面。
- JSON:返回 JSON 数据。
- Response 对象:自定义响应。
附全篇所有代码,以供测试使用
from flask import Flask, request, jsonify, Response
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, Flask!'
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post {post_id}'
@app.route('/json')
def json_response():
data = {'key': 'value'}
return jsonify(data)
@app.route('/custom')
def custom_response():
response = Response('Custom response with headers', status=200)
response.headers['X-Custom-Header'] = 'Value'
return response
def do_the_login():
return f'post请求,进行登录'
def show_the_login_form():
return f'get请求,展示登录表单'
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
if __name__ == '__main__':
app.run(debug=True)
测试结果如下
热门推荐
苹果手机密码安全全攻略:从设置到管理的最佳实践
80度水温最佳,山楂干泡水的科学饮用指南
白芷、小茴香、白胡椒:炖羊肉汤的黄金组合
深圳地铁19号线一期工程获批,皇岗口岸等站换乘调整
深圳地铁12号线开通:BIM技术+无人驾驶打造智慧地铁新标杆
阿坝三日游:黄龙九寨沟花湖,三大景区精华全攻略
从酥油茶到牦牛
肉:阿坝州美食里的藏羌文化
九寨沟、黄龙、四姑娘山:从水景到雪山的自然奇观
避开人流赏冬景:阿坝州黄龙九寨沟三日游
西安世博园必打卡:长安塔观景攻略
西安世博会背后的环保奇迹:从污染重灾区到生态补偿区
电动汽车供电设备安全要求标准
冬季羊汤养生攻略:从食材到禁忌,这些要点需谨记
瑜伽减压新姿势,告别焦虑每一天
孕期吃鸽子蛋:六大营养助力发育,这些事项要注意
鸽子蛋营养价值高,但增强免疫力需均衡饮食
琅琊区科协开展“食品安全科普进社区”活动
中国古代女官:介于嫔妃与宫女间的宫廷管理者
“女中尧舜”王喜姐:明朝在位最长的皇后
费曼质疑选择公理:数学无限性与物理离散性的矛盾
存款利率再降,储户的钱去哪儿了?
黄山必吃六大美食:每一道都凝聚着徽州的历史味道
南极海冰面积连续三年跌破关键水平!
从中医角度看:肝主情志,5个实用方法助你养肝护肝
百香果种植:百香果及其高产栽培技术,以下几点最主要
2024年灵活就业人员,退休年龄有变吗?有些特殊情况要分开看待
狗狗神经损伤的家庭护理秘籍
新装修房除醛指南:从源头控制到专业治理全攻略
环保耐用纹理美,实木板成健康家居首选
Wi-Fi频宽怎么选?一文读懂20MHz、40MHz、80MHz的区别与选择