60歳からITエンジニアを目指す無謀なブログ

60歳で定年し、職種を変更してIT技術者を目指すブログです。

flask 複数プログラム動作 ルーティング機能

レスポンシフな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のテンプレートがレンダリングされます。