【PythonWeb开发】Flask视图函数传递数据到前端模版的方法总结。

在Flask框架中,视图函数返回响应有四种常见方式,都得掌握。

一、返回文本内容

可以直接返回字符串,Flask会自动将其转换为一个响应对象,具有默认的text/html内容类型。

python 复制代码
@app.route('/return_text')
def return_text():
    return "这是一段文本数据"

二、返回JSON格式内容

使用jsonify函数(前后端分离),它是Flask提供的辅助函数,专门用于将Python字典或其他可序列化对象转换为JSON响应。

python 复制代码
from flask import jsonify

@app.route('/return_json')
def return_json():
    data = {"name": "xiaodai", "age": 18}
    return jsonify(data)

三、返回自定义的Response对象

在Flask中,可以直接实例化一个**Response**对象来更精细地控制响应的内容、状态码以及头部信息。

python 复制代码
from flask import Response

@app.route('/custom_response')
def custom_response():
    # 创建一个自定义的响应内容
    custom_content = "这是自定义的响应内容"

    # 实例化一个Response对象
    response = Response(
        response=custom_content,  # 响应内容
        status=200,  # HTTP状态码,默认是200 OK
        mimetype='text/plain',  # 响应的MIME类型,默认为'text/html'
        headers={  # 自定义响应头
            'X-Custom-Header': 'Some Value'
        }
    )
    
    return response

返回JSON内容还能和Response对象一起使用,只需将jsonify()返回的值用get_data()取出来传给response参数就行。

python 复制代码
@app.route('/api/data', methods=['GET'])
def get_data():
    data = {
        "message": "Hello from the API",
        "status": "success"
    }
    
    # 使用jsonify来创建标准的JSON响应内容,然后包装到自定义的Response中
    json_response = jsonify(data)
    
    # 转换为Response对象以添加自定义头部
    response = Response(
        response=json_response.get_data(),  # 获取jsonify生成的字节流数据
        status=200,
        mimetype='application/json',  # 指定为JSON类型
        headers={
            'X-API-Version': '1.0'  # 自定义响应头
        }
    )
    
    return response

四、渲染模版并返回数据

使用render_template函数(前后端不分离),它会加载指定的HTML模板文件,并且可以传递字典参数给模板以便填充动态内容。

python 复制代码
from flask import render_template

@app.route('/')
def index():
    username = "小呆"
    return render_template('index.html', username=username)

还可以先使用**render_template** 函数渲染模板得到HTML内容,然后将这个内容传入**Response** 的构造函数中,创建一个自定义的**Response**对象。这样,你可以在保留模板渲染功能的同时,进一步自定义响应的其他方面。

python 复制代码
from flask import render_template, Response

@app.route('/custom-rendered-template')
def custom_rendered_template():
    # 使用render_template渲染模板
    rendered_template = render_template('example.html')
    
    # 将渲染结果包装进自定义的Response对象中
    response = Response(
        response=rendered_template,  # 渲染后的模板内容
        status=200,  # 可以根据需要修改状态码
        mimetype='text/html',  # 默认情况下,render_template生成的是HTML内容,所以这里保持'text/html'
        headers={  # 添加任何自定义的响应头
            'X-Custom-Header': 'Custom Value'
        }
    )
    
    return response
相关推荐
追风少年ii14 分钟前
多组学顶刊--肿瘤源性氨可被调节性T细胞代谢利用,进而强化对机体抗肿瘤免疫反应的抑制效应
python·分类·数据分析·空间·单细胞
xdpcxq102923 分钟前
Flask - 常见应用部署方案
后端·python·flask
henry10101038 分钟前
Python脚本 - 创建AWS月度预算
python·云计算·aws
Ivanqhz39 分钟前
数据流分析的核心格(Lattice)系统
开发语言·javascript·后端·python·算法·蓝桥杯·rust
键盘鼓手苏苏41 分钟前
Flutter for OpenHarmony 实战:Flutter Rust Bridge — 极致计算性能方案
开发语言·后端·flutter·华为·rust·json·harmonyos
琛説43 分钟前
⚡PitchPPT:将PPT导出为高清全图PPT,并控制PPT文件大小在固定MB/GB以内【解析算法原理 · 作者谈】
windows·python·算法·github·powerpoint
csdn2015_44 分钟前
MybatisPlus LambdaQueryChainWrapper 联合查询
开发语言·windows·python
好家伙VCC1 小时前
# 发散创新:基于 Go 语言打造高性能服务网格的实践与突破在微服务架构
java·python·微服务·架构·golang
-To be number.wan1 小时前
Python数据分析:pyecharts可视化
python·信息可视化·数据分析
好家伙VCC1 小时前
# BERT在中文文本分类中的实战优化:从模型微调到部署全流程在自然语言处理(NL
java·python·自然语言处理·分类·bert