题目
Flask路由基础:如何定义一个简单的路由并返回响应?
信息
- 类型:问答
- 难度:⭐
考点
路由定义,视图函数,装饰器使用
快速回答
在Flask中定义路由的基本步骤:
- 使用
@app.route()装饰器绑定URL路径 - 编写视图函数处理请求并返回响应
- 可通过
methods参数指定HTTP方法
示例代码:
@app.route('/hello')
def hello():
return 'Hello, Flask!'
## 解析
1. 核心概念说明
路由(Route)是URL到处理函数的映射机制。当用户访问特定URL时,Flask调用对应的视图函数并返回响应结果。
2. 代码示例详解
from flask import Flask
app = Flask(__name__)
# 基础路由示例
@app.route('/welcome')
def welcome():
return "Welcome to our website!"
# 带动态参数的路由
@app.route('/user/<username>')
def show_user(username):
return f'User: {username}'
# 指定HTTP方法
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_login()
return show_login_form()3. 关键组件解析
- 装饰器@app.route():将URL路径(如'/welcome')与下方函数关联
- 视图函数:包含业务逻辑,必须返回字符串或Response对象
- 动态路由:使用
<variable>捕获URL中的变量 - methods参数:默认只响应GET请求,需显式声明其他HTTP方法
4. 最佳实践
- 路由定义应放在视图函数上方
- 对用户输入进行验证(如动态路由参数)
- 使用
url_for()生成URL而非硬编码 - 保持视图函数精简,复杂逻辑拆分到其他模块
5. 常见错误
- 忘记添加装饰器导致路由未注册
- 视图函数缺少return语句
- 未处理OPTIONS/HEAD方法导致405错误
- 动态路由未指定类型(默认字符串)
6. 扩展知识
- 端点(Endpoint):路由的内部标识符,默认使用函数名
- 转换器类型:
<int:user_id>可限制参数类型 - 集中注册:可使用
app.add_url_rule()替代装饰器 - 蓝图(Blueprint):大型项目中组织路由的推荐方式