今日のPython 第29回「TOP画面を作ってurl_forで、リンクを作成して画面遷移する」

2025年1月19日日曜日

Python_WEBアプリ編 公開

t f B! P L

   作成:2025/1/19

W012

はじめに

このブログでは、PythonでWEBアプリの作成を進めています。少しづつ機能を追加して、ローカルの仮想環境で動作確認をするという作業を地道に行っている状況です。

そして、進捗がある都度、このブログで紹介しています。

前回までの状況

現在、WEBアプリで家計簿のページを作成をすすめています。(→参考

前々回は、家計簿の収支データにユーザー名と管理番号情報を追加することで一つのデータベースを各ユーザー毎に分類して各自のデータのみ閲覧出来るようにしてみました。(→参考


現在、家計簿関連は以下の3ページを作成しています。


■画面①:「ユーザ登録」ページ■
■解説■
  • 新規にユーザを登録するためのページ


■画面②:「ログイン」ページ■
■解説■
  • ユーザ登録を済ませた後、家計簿のページにログインするためのページ


■画面③:「家計簿」ページ■

■解説■
  • ログインすると表示される家計簿のページ

改善が必要な点


各ページ間につながりがない状態です。


今回実施すること

今回は、これらのページにつながりを持たせます。画面遷移の構成は次のとおりです。

■図(画面遷移の構成)■■解説等■

  • 現在作成済みのページに、TOPページを追加します。
  • そして、TOPページから、リンクを作成して画面遷移できるようにします。
  • 各ページ間は、上図のように遷移します。
  • リンクには、url_for関数を使用します。


url_for関数とは

Flaskで、リンクを動的に生成できる関数です。
この関数は、ビュー関数名を指定するだけで、パラメータ付きの動的なリンクを生成できます。
そのほか、
・アプリケーション全体の保守性と柔軟性を大幅に向上
・検索エンジンの評価を高めることができる
といった効果も得られるようです。

基本的な構文は以下の通りです。
url_for('関数名', **パラメータ)

それでは、プログラムを修正していきたいと思います。
以下に今回のプログラムの修正のうち主なものを紹介します。
では始めます。


url_forでリンクを追加

■コード①■■解説等■

  • 以前、テスト的に準備したindex.htmlをTOPページにします。
  • 表題を「TOPページ」として「家計簿ページ」へのリンクを追加します。
  • リンク先はログイン画面のページです。
  • https://でアドレス指定しなくて良いので便利です。

普通にHTMLだけ使って

<a href='/login'>家計簿ページ</a>

でも良いのですが、「url_for」を使えば、URLを変更するときテンプレートは変更しなくても良いのでこのように実装する方がおすすめです。

HTMLのアンカータグを使う場合は、次のようになります。


■コード②■■解説等■

  • リンク先のログイン画面のページには、「ユーザ登録」ページへのリンクと「TOPページ」へのリンクを追加します。
  • こちらは、url_forを使わず、リンクしてみました。
  • main.pyの@app.route('/signup')等にリンクします。


■コード③■■解説等■

  • リンク先の新規登録画面のページには、「ログイン」ページへのリンクと「TOPページ」へのリンクを追加します。
  • こちらも同様にmain.pyの@app.route('/login')等にリンクします。


実施結果

では、ブラウザで表示してみます。
仮想環境ですので
http://127.0.0.1:5000/index
として表示すると、このように表示されます。


表示画面

■画面④:TOPページ■

■解説■
  • index.htmlをTOPページとしました。「家計簿ページ」のリンクをクリックすると、「ログイン」ページに移動します


■画面⑤:「ログイン」ページ■


■解説■
  • 「新規登録はこちら」のリンクをクリックすると「ユーザ登録」ページに移動します。
  • 「TOPに戻る」のリンクをクリックすると「TOP」ページに移動します。


■画面⑥:「ユーザ登録」ページ■

■解説■

  • 「ログインはこちら」のリンクをクリックすると「ログイン」ページに移動します。
  • 「TOPに戻る」のリンクをクリックすると「TOP」ページに移動します。

関連ファイルの説明

プログラムの修正の紹介は、関連するファイルとそのコード修正について部分的に抜粋して説明していますので、全体のどの部分を修正しているのかを把握し辛いと思います。

その点を緩和するために、このプロジェクトで使用するファイルやフォルダ構成を、別ページで解説しています。

必要に応じてご覧ください。(→参考)


まとめ

今回は、家計簿関連のページにつながりを持たせてみました。

家計簿ページのWEBページとしての構成が少し形づくられて、また一歩前進できました。




このブログを検索

アーカイブ

カテゴリー

QooQ