第16章 フォームとテンプレート フォームとテンプレート
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
プレビュー
FastAPIのAPIはその主な焦点のヒントですが、FastAPI は従来の Web コンテンツも処理できます。 この章では、HTML にデータを挿入するための標準 HTML フォームとテンプレートについて説明します。
フォーム
これまで見てきたように、FastAPIは主にAPIを構築するために設計されており、そのデフォルトの入力はJSONである。 しかし、だからといって標準的なバナナHTMLやフォーム、友達を提供できないというわけではない。
FastAPI は、Query やPath のような他のソースと同様に、Form 依存関係を使用して HTML フォームからのデータをサポートする。
FastAPIフォームを実行するには、Python-Multipartパッケージが必要なので、必要ならpip install python-multipart 。 また、この章のテストフォームを格納するために、第15章の静的ディレクトリが必要になる。
例3-11をやり直すが、JSON文字列の代わりにフォームでwho 。 (このパス関数greet2() を呼び出し、古いパス関数greet() がまだ残っていれば、それを使わないようにする。)main.pyに 例16-1を追加する。
例16-1. GET フォームから値を取得する
fromfastapiimportFastAPI,Formapp=FastAPI()@app.get("/who2")defgreet2(name:str=Form()):returnf"Hello,{name}?"
主な違いは、Path 、Query 、第3章のその他の代わりにForm。
例16-2のHTTPieを使った初期フォームテストを試してみよう(-f 、JSONとしてではなくフォームエンコーディングでアップロードする必要がある)。
例16-2. HTTPieを使ったフォームGET リクエスト
$ http -f -b GET localhost:8000/who2 name="Bob Frapples" "Hello, Bob Frapples?"
例16-3では、このファイル(form1.html)をそこに置くことにする。
例16-3. フォームGET リクエスト(static/form1.html)
<form action="http://localhost:8000/who2" method="get"> Say hello to my little friend: <input type="text" name="name" value="Bob Frapples"> <input type="submit"> </form>
ブラウザにhttp://localhost:8000/static/form1.html、フォームが表示される。任意のテスト文字列を入力すると、このような結果が返ってくる:
"detail":[{"loc":["body","name"],
"msg":"field required",
"type":"value_error.missing"}]}
え?
Uvicornが起動しているWindowsでログを見る:
INFO: 127.0.0.1:63502 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access