レスポンシフなWebサイトを構築するときに、どうしても複数プログラムを動作させたい時があります。
なかなかそういう例がネットで見当たらないのでChatGPTに聞いてみした。
以下その回答です。
ーーーーーーーーーーーー
アクセスディレクトリ内に
alpha_a.py
alpha_b.py
alpha_c.py
templates/
+---- rendar.html
がある前提です。
alpha_a.pyに以下のようなコードを追加して、別のビューを作成できます。
from flask import render_template
from alpha_a import app
@app.route('/alpha_b')
def alpha_b():
return render_template('rendar2.html')
@app.route('/alpha_c')
def alpha_c():
return render_template('rendar3.html')
上記のコードは、/alpha_bと/alpha_cのURLパスに対して、それぞれalpha_b()とalpha_c()関数を関連付けます。これにより、それぞれの関数が呼び出されたときに、rendar2.htmlおよびrendar3.htmlのテンプレートがレンダリングされます。
rendar.htmlテンプレート内で、/alpha_bと/alpha_cのURLにリンクを追加することができます。例えば、以下のようになります。
<a href="{{ url_for('alpha_b') }}">Alpha B</a>
<a href="{{ url_for('alpha_c') }}">Alpha C</a>
なお、alpha_b.pyやalpha_c.pyの中でrendar2.htmlやrendar3.htmlを表示する場合には、それぞれのファイルをレンダリングするためのFlaskのルートを作成する必要があります。これらのファイルをレンダリングするためのFlaskルートは、alpha_a.pyと同様に作成することができます。具体的には、以下のようになります。
from flask import render_template
from alpha_b import app
@app.route('/rendar2')
def rendar2():
return render_template('rendar2.html')
from alpha_c import app
@app.route('/rendar3')
def rendar3():
return render_template('rendar3.html')
上記のコードは、/rendar2および/rendar3 URLパスに対して、それぞれrendar2()およびrendar3()関数を関連付けます。これにより、それぞれの関数が呼び出されたときに、rendar2.htmlおよびrendar3.htmlのテンプレートがレンダリングされます。