目录
什么是视图函数
在 Flask 中,视图函数(View Function)是与路由绑定的函数,负责处理用户请求并返回响应。它是 Flask 应用的核心逻辑单元,通常返回 HTML、JSON 或其他数据。
基本视图函数
视图函数与 @app.route()
装饰器一起使用,定义如何响应特定 URL。
示例
1 2 3 4 5 6 7 8 9 10 | from flask import Flask app = Flask(__name__) @app.route('/') def home(): return '欢迎来到首页!' if __name__ == '__main__': app.run(debug=True) |
- 解释:
home()
是视图函数,绑定到根路径 (/
)。- 返回字符串 “欢迎来到首页!” 作为响应。
返回不同类型的响应
视图函数可以返回多种类型的内容,例如 HTML、JSON 或自定义响应对象。
示例
from flask import Flask, jsonify, make_response
app = Flask(name)
@app.route(‘/’)
def home():
return ‘
欢迎
‘ # 返回 HTML
@app.route(‘/api’)
def api():
data = {‘message’: ‘Hello, API!’}
return jsonify(data) # 返回 JSON
@app.route(‘/custom’)
def custom():
return make_response(‘自定义响应’, 201) # 返回自定义状态码
if name == ‘main‘:
app.run(debug=True)
- 解释:
return '<h1>欢迎</h1>'
:返回 HTML。jsonify(data)
:返回 JSON 数据。make_response()
:返回带有状态码的自定义响应。
处理请求数据
视图函数可以通过 request
对象访问请求中的数据(如表单、查询参数等)。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from flask import Flask, request app = Flask(__name__) @app.route('/submit', methods=['GET', 'POST']) def submit(): if request.method == 'POST': name = request.form.get('name', '陌生人') # 从表单获取数据 return f'你好,{name}!' elif request.method == 'GET': name = request.args.get('name', '陌生人') # 从查询参数获取数据 return f'欢迎,{name}!' return '无效请求' if __name__ == '__main__': app.run(debug=True) |
- 解释:
request.form.get('name')
:从 POST 请求的表单中获取数据。request.args.get('name')
:从 GET 请求的 URL 参数中获取数据(例如/submit?name=Alice
)。
视图函数中的重定向和错误处理
视图函数可以执行重定向或抛出错误,Flask 提供了相关工具。
示例
from flask import Flask, redirect, url_for, abort
app = Flask(name)
@app.route(‘/’)
def home():
return ‘首页’
@app.route(‘/login’)
def login():
return redirect(url_for(‘home’)) # 重定向到首页
@app.route(‘/admin’)
def admin():
abort(403) # 抛出 403 错误
@app.errorhandler(403)
def forbidden(error):
return ‘无权限访问’, 403 # 自定义错误处理
if name == ‘main‘:
app.run(debug=True)
- 解释:
redirect(url_for('home'))
:重定向到home
视图。abort(403)
:抛出 403 错误。@app.errorhandler(403)
:处理特定错误代码。
参考资料
- Flask 官方文档 – View Functions – 视图函数官方指南。
- Real Python – Flask 视图 – 视图函数的实践讲解。
- Flask 请求对象 – 深入了解
request
。 - Flascend-descendW3Schools – Flask Views – 简单视图函数示例。
视图函数是 Flask 构建动态 Web 应用的基础。如果需要更复杂的示例(例如结合模板或表单处理),请告诉我!
发表回复