gpt4 book ai didi

python - 如何在 flask 中生成一个模板而不是另一个模板?

转载 作者:行者123 更新时间:2023-11-30 21:55:50 24 4
gpt4 key购买 nike

我一直在使用 Flask 进行一个项目,但我被困在一个部分,我需要弄清楚如何生成一个 Flask 模板而不是另一个。

为了说明我的意思,例如,我有一个这样的程序。

main.py

from flask import Flask, stream_with_context, Response, render_template
app = Flask('app')

@app.route('/')
def hello_world():
def generate():
yield render_template('index.html')
yield render_template('index2.html')
return Response(stream_with_context(generate()))

app.run(host='0.0.0.0', port=8080)

index.html

<h3>Hi</h3>

index2.html

<h3>Bye</h3>

运行 main.py 返回:

Hi
Bye

尽管这是有道理的,但我的目标是使其结果只是 Bye ,它应该取代 Hi。我尝试了其他路径,例如同时返回,但都不起作用。关于如何做到这一点有什么想法吗?

最佳答案

这不是您的情况,但如果您想流式传输包含静态内容的模板,可以使用以下方法。我将使用 sleep() 方法将执行暂停 1 秒。

from flask import Flask, stream_with_context, request, Response, flash
import time
from time import sleep

app = Flask(__name__)

def stream_template(template_name, **context):
app.update_template_context(context)
t = app.jinja_env.get_template(template_name)
rv = t.stream(context)
rv.disable_buffering()
return rv

data = ['Hi', 'Bye']

def generate():
for item in data:
yield str(item)
sleep(1)

@app.route('/')
def stream_view():
rows = generate()
return Response(stream_with_context(stream_template('index.html', rows=rows)))



if __name__ == "__main__":
app.run()

其中templates/index.html:

{% for item in rows %}
<h1>{{ item }}</h1>
{% endfor %}

参见streaming from templates在文档中。

关于python - 如何在 flask 中生成一个模板而不是另一个模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55736527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com