Flask ビューからストリーミングされたリアルタイム データを操作する場合、それを動的 HTML テンプレートに表示したいと思うのは自然なことです。ただし、テンプレートがサーバー側で一度レンダリングされ、その全体がクライアントに送信されるため、従来のテンプレート レンダリング技術では不十分です。
この問題に対する 1 つの解決策クライアント側の更新に JavaScript を利用することです。ストリーミング エンドポイントに対して XMLHttpRequest リクエストを行うことで、データを段階的に読み取り、ページに直接出力できます。このアプローチにより、リアルタイムの更新と表示形式の完全な制御が可能になります。
JavaScript を使用した例を次に示します:
Python (サーバー側):
from flask import Flask, Response app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/stream') def stream(): def generate(): for i in range(10): yield str(i) + '\n' return Response(generate(), mimetype='text/plain')
HTML (クライアント側):
<p>This is the latest output: <span>
別のアプローチには、iframe を使用してストリーミングされた HTML 出力を表示することが含まれます。この手法では動的なレンダリングが可能ですが、次のような欠点があります。
このメソッドでは、index.html ファイルはcontains:
<p>This is all the output:</p> <iframe src="{{ url_for('stream') }}"></iframe>
Python のストリーム ビューは次のようになります:
from flask import stream_with_context @app.route('/stream') def stream(): @stream_with_context def generate(): yield '<link rel=stylesheet href="{{ url_for('static', filename='stream.css') }}">' for i in range(10): yield render_template_string('<p>{{ i }}: {{ s }}</p>\n', i=i, s=sqrt(i))
この例では、最初に CSS が render_template_string を使用して iframe にロードされ、HTML コンテンツが段階的にストリーミングされます。 .
以上がFlask ビューから HTML テンプレートにリアルタイム データを効率的にストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。