]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
⬆️ Upgrade Starlette to `>=0.29.0,<0.33.0`, update docs and usage of templates with...
authorSebastián Ramírez <tiangolo@gmail.com>
Tue, 26 Dec 2023 20:12:34 +0000 (21:12 +0100)
committerGitHub <noreply@github.com>
Tue, 26 Dec 2023 20:12:34 +0000 (21:12 +0100)
* 📝 Update docs for compatibility with Starlette 0.29.0 and new template arguments

* ⬆️ Upgrade Starlette to >=0.29.0,<0.33.0

* 📌 Remove AnyIO pin

docs/em/docs/advanced/templates.md
docs/en/docs/advanced/templates.md
docs_src/templates/tutorial001.py
pyproject.toml

index 1fb57725af17583c3b6d441995845fefbd10c11a..0a73a4f47e811bcac8aed898ed9ee021bdf4a392 100644 (file)
@@ -27,7 +27,7 @@ $ pip install jinja2
 * 📣 `Request` 🔢 *➡ 🛠️* 👈 🔜 📨 📄.
 * ⚙️ `templates` 👆 ✍ ✍ &amp; 📨 `TemplateResponse`, 🚶‍♀️ `request` 1️⃣ 🔑-💲 👫 Jinja2️⃣ "🔑".
 
-```Python hl_lines="4  11  15-16"
+```Python hl_lines="4  11  15-18"
 {!../../../docs_src/templates/tutorial001.py!}
 ```
 
index 38618aeeb09cd51c5ca9e8f6bc5ac9af24b22dee..583abda7fb0e4787125a56f2d3e40d0e446f83cf 100644 (file)
@@ -25,14 +25,16 @@ $ pip install jinja2
 * Import `Jinja2Templates`.
 * Create a `templates` object that you can re-use later.
 * Declare a `Request` parameter in the *path operation* that will return a template.
-* Use the `templates` you created to render and return a `TemplateResponse`, passing the `request` as one of the key-value pairs in the Jinja2 "context".
+* Use the `templates` you created to render and return a `TemplateResponse`, pass the name of the template, the request object, and a "context" dictionary with key-value pairs to be used inside of the Jinja2 template.
 
-```Python hl_lines="4  11  15-16"
+```Python hl_lines="4  11  15-18"
 {!../../../docs_src/templates/tutorial001.py!}
 ```
 
 !!! note
-    Notice that you have to pass the `request` as part of the key-value pairs in the context for Jinja2. So, you also have to declare it in your *path operation*.
+    Before FastAPI 0.108.0, Starlette 0.29.0, the `name` was the first parameter.
+
+    Also, before that, in previous versions, the `request` object was passed as part of the key-value pairs in the context for Jinja2.
 
 !!! tip
     By declaring `response_class=HTMLResponse` the docs UI will be able to know that the response will be HTML.
@@ -58,7 +60,7 @@ It will show the `id` taken from the "context" `dict` you passed:
 
 ## Templates and static files
 
-And you can also use `url_for()` inside of the template, and use it, for example, with the `StaticFiles` you mounted.
+You can also use `url_for()` inside of the template, and use it, for example, with the `StaticFiles` you mounted.
 
 ```jinja hl_lines="4"
 {!../../../docs_src/templates/templates/item.html!}
index 245e7110b195d257b8a93b063124465627f1f765..81ccc8d4d0b3fa9e8c8558946825ee4f4e005d68 100644 (file)
@@ -13,4 +13,6 @@ templates = Jinja2Templates(directory="templates")
 
 @app.get("/items/{id}", response_class=HTMLResponse)
 async def read_item(request: Request, id: str):
-    return templates.TemplateResponse("item.html", {"request": request, "id": id})
+    return templates.TemplateResponse(
+        request=request, name="item.html", context={"id": id}
+    )
index 499d0e5dc8c12a0c69fe86a4ed2387c0d7ff0897..38728d99e945bed515d59f9024b606355d896fef 100644 (file)
@@ -40,11 +40,9 @@ classifiers = [
     "Topic :: Internet :: WWW/HTTP",
 ]
 dependencies = [
-    "starlette>=0.28.0,<0.29.0",
+    "starlette>=0.29.0,<0.33.0",
     "pydantic>=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0",
     "typing-extensions>=4.8.0",
-    # TODO: remove this pin after upgrading Starlette 0.31.1
-    "anyio>=3.7.1,<4.0.0",
 ]
 dynamic = ["version"]