レンダリングされたテンプレートから Python を実行することはできませんが、Python と Javascript を組み合わせることで、必要なことを行うことができます。Web フレームワークの例として Flask を使用しますが、Flask に特に詳しくなくても、Flask が何をするかは明らかです。
アイデアは、2 つのルート/アドレスがあるということです。1 つは、「更新...」を実行する基本的なビューを提供します。もう 1 つのルートは、適切な HTML プレゼンテーションにレンダリングされたディレクトリ データで構成される HTML フラグメントを返します。だから、このようなもの:
パイソン:
def _walk_through_directories():
"""
Walk through directories and gather the
data you want and return it in some collection
for example.
"""
...
return directory_data
@app.route('/directories')
def directories():
return render_template('directories.html')
@app.route('/directories/fragment')
def directories():
directory_data = _walk_through_directories()
return render_template('directories_fragment.html',
directory_data=directory_data)
ユーザーが /directories の基本ページに入ると、ディレクトリ データについてはまだ何も含まれていない基本テンプレートが表示されます。これを解決するには、ドキュメントの読み込みが完了した後に Javascript を実行し、Ajax で HTTP GET を実行してコンテンツをフェッチします。だから、このようなもの:
「directories.html」から呼び出される Javascript + jQuery:
$('#message-box').html('Updating...');
$.get('/directories/fragment', function(data) {
$('#result-box').html(data);
$('#message-box').html('All done!');
});
そのため、基本的なページを Python で提供し、クライアント側の Javascript を使用して「動的な」コンテンツを取得するという考え方です。私はこれをまとめただけなので、どこかで括弧が 1 つまたは 2 つ欠けている可能性があることに注意してください。適切なエラー処理とすべてのジャズを追加する必要があります。