目录

  1. 什么是视图函数
  2. 基本视图函数
  3. 返回不同类型的响应
  4. 处理请求数据
  5. 视图函数中的重定向和错误处理
  6. 参考资料

什么是视图函数

在 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 构建动态 Web 应用的基础。如果需要更复杂的示例(例如结合模板或表单处理),请告诉我!