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)
测试结果如下
热门推荐
猫咪牛磺酸补充完全指南:从食物来源到补充方法
鬼针草:一种神奇的中草药
探索新疆红河的位置与特色
补气血就吃这8道菜,面色红润气色好
健身房破产清算相关法律问题详解
医学类专业选科要求详解:为什么强绑物化选科而不是生化选科?
应对城市深度老龄化,上海打造运动促进健康“新空间”
脑子里响个不停,是耳鸣吗?丨健康总动员
7个实用方法,帮助多系统萎缩患者改善生活质量!
三足玉鼎:权力、财富与地位的象征
关于乒乓球发球的那些事,你应该了解的都在这里
投资行为学是什么?如何利用它提高投资效果?
孩子癌症患者的心理支持
冬季头晕眩晕:原因与防范之道
青少年运动,不能不设防
人口变迁观察:中部六省常住人口变动全景速览
如何将图片转换为可点击链接:HTML、Markdown和CMS实现指南
二手房买卖赎楼流程:详解操作步骤及注意事项
预防心梗的四大类药物:作用机制与使用指南
购机必看!教你几招轻松辨别手机是否为新机正品!
节瓜眉豆花生炖猪骨汤:清热祛湿的夏日养生汤
新疆红河:天山南麓的神秘水乡
夏侯惇的读音与人物解析
意外中毒,如何急救?
适合孩子吃的少刺鱼有哪些
五大措施保障G240施工交通管制期间交通安全畅通便民
买房必看!掌握这10大要点,轻松选出心仪好房!
购房前的准备工作,别盲目行动
自发性气胸的四个诱因及预防措施
汕头,敬世界一杯工夫茶!