目录
什么是视图函数
在 Flask 中,视图函数(View Function)是与路由绑定的函数,负责处理用户请求并返回响应。它是 Flask 应用的核心逻辑单元,通常返回 HTML、JSON 或其他数据。
基本视图函数
视图函数与 @app.route()
装饰器一起使用,定义如何响应特定 URL。
示例
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
对象访问请求中的数据(如表单、查询参数等)。
示例
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 应用的基础。如果需要更复杂的示例(例如结合模板或表单处理),请告诉我!
发表回复