首页 > 其他分享 >Flask 视图函数

Flask 视图函数

时间:2024-12-11 20:57:59浏览次数:5  
标签:函数 Flask app request 视图 response def

视图函数是 Flask 应用中的核心部分,它负责处理请求并生成响应。

视图函数与路由紧密结合,通过路由将 URL 映射到具体的视图函数。

以下是对 Flask 视图函数的详细说明,包括如何定义、使用请求数据、返回响应、以及如何处理错误等。

  1. 定义视图函数:视图函数是处理请求并返回响应的核心功能。
  2. 接收请求数据:使用 request 对象获取 URL 参数、表单数据、查询参数等。
  3. 返回响应:可以返回字符串、HTML、JSON 或自定义响应对象。
  4. 处理请求和响应:使用 request 对象和 make_response 来处理请求和生成自定义响应。
  5. 处理错误:视图函数内处理异常或使用 Flask 的错误处理机制。
  6. 视图函数的装饰器:使用 @app.before_request@app.after_request 等装饰器处理请求前后逻辑。
  7. 视图函数返回的状态码:可以指定 HTTP 状态码来表示请求的处理结果。

1. 定义视图函数

视图函数是一个普通的 Python 函数,它接收请求并返回响应。视图函数通常与路由配合使用,通过装饰器将 URL 映射到视图函数。

实例

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, World!'

  • @app.route('/'):将根 URL / 映射到 home 视图函数。
  • def home():视图函数,返回字符串 'Hello, World!' 作为响应。

2. 接收请求数据

视图函数可以接收不同类型的请求数据,包括 URL 参数、表单数据、查询参数等。

获取 URL 参数:

实例

@app.route('/greet/<name>')
def greet(name):
    return f'Hello, {name}!'

  • <name> 是一个 URL 参数,传递到视图函数 greet

获取表单数据:

实例

from flask import request

@app.route('/submit', methods=['POST'])
def submit():
    username = request.form.get('username')
    return f'Form submitted by {username}!'

request.form.get('username'):获取 POST 请求中表单数据的 username 字段。

获取查询参数:

实例

@app.route('/search')
def search():
    query = request.args.get('query')
    return f'Search results for: {query}'

request.args.get('query'):获取 GET 请求中的查询参数 query。

3. 返回响应

视图函数可以返回多种类型的响应,包括字符串、HTML、JSON、或自定义响应对象。

返回字符串:

实例

@app.route('/message')
def message():
    return 'This is a simple message.'

返回 HTML 模板:

实例

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name)

render_template('hello.html', name=name):渲染 HTML 模板 hello.html,并将 name 变量传递给模板。

返回 JSON 数据:

实例

from flask import jsonify

@app.route('/api/data')
def api_data():
    data = {'key': 'value'}
    return jsonify(data)

jsonify(data):将 Python 字典转换为 JSON 响应。

返回自定义响应对象:

实例

from flask import Response

@app.route('/custom')
def custom_response():
    response = Response('Custom response with headers', status=200)
    response.headers['X-Custom-Header'] = 'Value'
    return response

Response('Custom response with headers', status=200):创建自定义响应对象,并设置响应头。

4. 处理请求和响应

视图函数可以访问请求对象,并根据请求数据生成响应。可以使用 request 对象来获取请求的信息,使用 make_response 来创建自定义响应。

使用 request 对象:

实例

from flask import request

@app.route('/info')
def info():
    user_agent = request.headers.get('User-Agent')
    return f'Your user agent is {user_agent}'

request.headers.get('User-Agent'):获取请求头中的 User-Agent 信息。

使用 make_response:

实例

from flask import make_response

@app.route('/header')
def custom_header():
    response = make_response('Response with custom header')
    response.headers['X-Custom-Header'] = 'Value'
    return response

make_response('Response with custom header'):创建响应对象并设置自定义头信息。

5. 处理错误

可以在视图函数中处理异常或错误,或者通过 Flask 提供的错误处理机制来处理应用中的错误。

在视图函数中处理错误:

实例

@app.route('/divide/<int:x>/<int:y>')
def divide(x, y):
    try:
        result = x / y
        return f'Result: {result}'
    except ZeroDivisionError:
        return 'Error: Division by zero', 400

使用 try-except 语句处理除零错误,并返回自定义错误消息和状态码。

全局错误处理:

实例

@app.errorhandler(404)
def not_found(error):
    return 'Page not found', 404

@app.errorhandler(404):定义处理 404 错误的函数。

6. 视图函数的装饰器

除了 @app.route,Flask 还支持其他装饰器,用于实现更复杂的功能。

示例:

  • @app.before_request:在每个请求处理之前运行的函数。
  • @app.after_request:在每个请求处理之后运行的函数。
  • @app.teardown_request:在请求结束后运行的函数,用于清理工作。

示例装饰器使用:

实例

@app.before_request
def before_request():
    print('Before request')

@app.after_request
def after_request(response):
    print('After request')
    return response

@app.teardown_request
def teardown_request(exception):
    print('Teardown request')

7. 视图函数返回的状态码

视图函数不仅可以返回内容,还可以指定 HTTP 状态码。

实例

@app.route('/status')
def status():
    return 'Everything is OK', 200

返回状态码 200 表示请求成功。

返回带有状态码的响应对象:

实例

from flask import Response

@app.route('/error')
def error():
    return Response('An error occurred', status=500)

返回状态码 500 表示服务器内部错误。

标签:函数,Flask,app,request,视图,response,def
From: https://blog.csdn.net/zhao1iyong/article/details/144357148

相关文章

  • Flask 路由
    Flask路由是Web应用程序中将URL映射到Python函数的机制。Flask路由是Flask应用的核心部分,用于处理不同URL的请求,并将请求的处理委托给相应的视图函数。以下是关于Flask路由的详细说明,包括路由的定义、参数、方法和规则等。定义路由:使用 @app.route('/path')......
  • flask框架安大校园交易网站毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着互联网的快速发展,校园交易网站在高校的商业活动和学生生活中扮演着越来越重要的角色。关于校园交易网站的研究,现有研究主要以大型......
  • flask框架电力集团电子商务采购平台毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于电力集团电子商务采购平台的研究,现有研究多聚焦于传统采购模式向电商采购模式转变的一般性优势探讨,如提高效率、降低成本等方面。......
  • OpenCV的简单函数
    一、二值化(threshold)1.二值化图二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图。2.实现方法,函数阈值法(THRESH_BINARY)反阈值法(THRESH_BINARY_INV)截断阈值法(THRESH_TRUNC):低阈值零处理(THRESH_TOZERO)超阈值零处理(THRESH_TOZERO_INV)OTSU阈......
  • Golang学习笔记_02——函数
    Golang测试功能应用Golang学习笔记_01——包函数文章目录函数1.定义2.返回值3.命名返回值4.可变参数源码Go语言中的函数是一种基本的编程结构,用于封装一段代码,以便在需要时多次调用。函数可以接收参数并返回结果,是实现代码复用和模块化编程的重要手段。1......
  • 【语法】高阶函数:map、filter、sorted、reduce
    map【python】Python高阶函数--map函数的详细语法分析与应用实战_pythonmap-CSDN博客filter【python】Python高阶函数--filter函数的高阶用法解析与应用实战_python的filter函数的用法-CSDN博客sorted【python】Python高阶函数--sorted函数的高阶用法解析与应用实战_高阶函......
  • C语言(函数指针与指针函数)
    函数指针定义:函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。函数指针存在的意义:让函数多了一种调用方式函数指针作为形参,可以形式调用(回调......
  • flask毕设校园闲置物品回收系统设计与实现(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着高校规模的扩大和学生消费能力的提升,校园内产生了大量的闲置物品,这些物品不仅占用空间资源,还可能对环境造成负担。关于校园闲置物品回......
  • flask毕设校园闲置物品交易平台的设计与实现(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展和资源循环利用理念的深入人心,校园闲置物品交易平台的设计与实现成为了当前研究的热点。目前,国内外对于二手交易平......
  • RT-DETR改进策略【损失函数篇】| WIoU v3:针对低质量样本的边界框回归损失函数
    一、背景现有问题:大多数现有工作假设训练数据中的样本都是高质量的,专注于增强边界框回归损失的拟合能力。然而,在低质量样本上盲目增强边界框回归会损害定位性能。解决思路:本文使用Wise-IoU,其动态非单调FM使用异常值程度而非IoU来评估锚框的质量,并提供一种有效的梯度增益......