1. HOME
  2. ブログ
  3. IT技術
  4. 【第5回】FastAPIチュートリアル: toDoアプリを作ってみよう【予定詳細ページ作成編】

【第5回】FastAPIチュートリアル: toDoアプリを作ってみよう【予定詳細ページ作成編】

FastAPIチュートリアル: toDoアプリを作ってみよう~第5回~

前回の記事「【第4回】FastAPIチュートリアル: toDoアプリを作ってみよう【管理者ページ改良編】」の続きです。

今回も、toDo アプリを作る過程で、FastAPI の使い方を学んでいきましょう!

第1回はこちら

予定の詳細ページ

前回、管理者ページを作り、/todo/{username}/{year}/{month}/{day} というURLパターンを各日付にリンクさせました。

今回は、このURLパターンについて、FastAPI で処理を書いていきます。

最終的な目標は、予定の「登録」「削除」「終了」ができるようなページを作成することです。

URLパターンのルーティング

FastAPI では、以下のようにURLパターンはルーティングします。

とても直感的でわかりやすいです。

(一番最後のコードは、新たに templates/detail.html を作成して記述)

このように、FastAPIではURLパターンは引数で取得可能です。

例えば、http://127.0.0.1:8000/todo/admin/2019/4/1なら…

fastpi_5-1

URLパターンの表示テスト

のように表示されます。

ログインユーザのみ訪問可能にする

しかし、このままでは、先ほどのリンクに直接訪問してきた人がいた場合、予定が丸見えです。

プライバシーの保護のためにも、このページも管理者しか訪問できないようにする必要があります。

admin()関数のように「Basic認証」を導入すればOKです。

しかし、同じようなことを何回も書くのは面倒なので認証関数を作成しましょう。

新しく auth.py を作り、以下のように認証部分を取り出します。

すると、admin() も以下のように書き直すことができます。

( from auth import auth を忘れずに!)

detail()も修正

detail() も同様です。

以下のように書き直すことで、ログイン中のユーザのみ訪問可能となります。

(ログイン中のユーザが他人の予定を見ることも弾くようにします)

from starlette.responses import RedirectResponse を新たにインポートして…

確認する時は、ブラウザのクッキーを削除してみたりして確認してください。

現在の予定一覧を取得する

次に、予定詳細ページで「現在入っている予定」を表示させるようにしましょう。

やることはさほど難しくありません。

URLパターンから受け取った情報から、該当タスクを取得しビューに反映させるだけです。

したがって

のように書き直せば、ビューに該当タスクを渡すことができます。

次に、ビューでタスクを展開しましょう。

確認

「予定を遂行したか」の処理は「/done」というURLに投げることにしました。

fastpi_5-2

動作確認

/done をコーディングする

次に、先ほどのURLをコーディングします。

内容はタスクの「終了したか(done)」を変更させるだけですが、このURLもログインユーザ限定にするためにこれも認証関数などを挟みます

ポイントは、フォームでデータを受け取るので、関数は async をつける必要があります。

また、他のログインユーザから、他人の予定を無差別に「終了」とされるのを防ぐ工夫も施す必要があります。

今回は「ログインユーザIDで取得したタスクの中から、受け取ったIDが一致した場合」にしましたが、URLパターンで実装するのもアリだと思います。

確認

うまく動作すれば、このような表示に変わります。

fastapi_5-3

終了したタスク

第5回:さいごに

今回は、予定詳細ページの充実を図りました。

しかし、まだまだ機能としては不十分です。

新たな予定の登録」や「予定の削除」機能があってこそtoDoアプリケーションです。

では、次回はこの辺りを実装していきたいと思います!

関連記事

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事