Chapter 16. Forms and Templates
Preview
Although the API in FastAPI is a hint of its main focus, FastAPI can also handle traditional web content. This chapter talks about standard HTML forms and templates for inserting data into HTML.
Forms
As you’ve seen, FastAPI was mainly designed to build APIs, and its default input is JSON. But that doesn’t mean that it can’t serve standard banana HTML, forms, and friends.
FastAPI supports data from HTML forms much as it does
from other sources like Query and Path,
using the Form dependency.
You’ll need the package Python-Multipart for any FastAPI
forms work, so run pip install python-multipart if you need to.
Also, the static directory from Chapter 15 will be needed
to house the test forms in this chapter.
Let’s redo Example 3-11,
but provide the who value via a form
instead of a JSON string.
(Call this path function greet2() to avoid clobbering
the old greet() path function if it’s still around.)
Add Example 16-1 to main.py.
Example 16-1. Get a value from a GET form
fromfastapiimportFastAPI,Formapp=FastAPI()@app.get("/who2")defgreet2(name:str=Form()):returnf"Hello,{name}?"
The main difference is that the value comes from Form
instead of Path, Query, and the others from Chapter 3.
Try an initial form test with HTTPie in Example 16-2
(you need that -f to upload with form encoding
rather than as JSON).
Example 16-2. Form GET request with HTTPie
$ http -f -b GET localhost:8000/who2 name="Bob Frapples" "Hello, Bob Frapples?" ...
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