首页 > 文章列表 > 多机测试中如何保存服务端渲染的页面到数据库?

多机测试中如何保存服务端渲染的页面到数据库?

122 2025-04-01

多机测试中如何保存服务端渲染的页面到数据库?

多机测试环境下,高效保存服务端渲染页面

在进行多机测试时,将服务端渲染的页面结果保存到数据库,有利于后续的测试结果分析和复现。本文提供一种解决方案:

  1. 数据库表结构设计: 在数据库中创建一张表,用于存储页面测试结果。该表至少包含 页面名称页面内容 两个字段。

  2. Jinja2 模板数据获取: 使用 Jinja2 模板引擎,通过 request.get_data() 方法获取渲染后的完整页面内容。

  3. 数据库操作与保存: 利用 SQLAlchemy 或 Flask-SQLAlchemy 等数据库操作库,将页面名称和内容写入数据库。

以下是一个示例代码,基于 Flask 框架:

from flask import Flask, render_template, request
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine, Column, Integer, String, Text # 使用 Text 类型存储较大的页面内容
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Page(Base):
    __tablename__ = 'pages'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    content = Column(Text) # 使用 Text 类型存储页面内容

engine = create_engine('sqlite:///db.sqlite') # 可根据实际情况修改数据库连接
Session = sessionmaker(bind=engine)
session = Session()

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/save_page', methods=['POST'])
def save_page():
    name = request.form.get('page_name') # 使用 get 方法避免 KeyError
    content = request.get_data().decode('utf-8') # 解码为 UTF-8 字符串

    page = Page(name=name, content=content)
    session.add(page)
    session.commit()

    return '页面保存成功'

if __name__ == '__main__':
    Base.metadata.create_all(engine) # 创建数据库表
    app.run(debug=True)

通过 POST 请求,将页面名称和内容发送到 /save_page 接口,即可将服务端渲染的页面内容保存到数据库中。 请根据实际项目需求调整数据库连接字符串和表结构。 使用 Text 类型存储页面内容,可以更好地处理较大的页面数据。 此外,添加错误处理机制,例如异常捕获,可以提高代码的健壮性。

来源:1740099258