Zum Inhalt

Versionshinweise

0.38.2

Der 27. Juli 2024

fixierte.

  • geht nicht davon aus, dass alle Routinen __name__ auf routing.get_name()#2648 haben.

0.38.1

Der 23. Juli 2024

bereits gelöscht

  • Zurückgesetzt auf „ Unterstützung für ASGI pathsend-Erweiterungen hinzugefügt "#2649.

0.38.0

vom 20. Juli 2024

hinzugefügt wurde.

  • erlaubt die Verwendung von memoryview in StreamingResponse und Response#2576 und #2577.
  • Wenn der in StaticFiles#2583 angeforderte Dateiname zu lang ist, wird ein 404 anstelle von 500 gesendet.

Änderung (bzw. Änderung)

  • schlägt schnell mit ungültigem Jinja2Template-Instanziierungsparameter #2568 fehl.
  • Überprüfen Sie, dass Endpunkt-Handler nur einmal asynchron #2536 sind.

fixierte.

  • hat die richtige Synchronisation zu WebSocketTestSession#2597 hinzugefügt.

0.37.2

vom 5. März 2024

hinzugefügt wurde.

  • Add hinzufügen bytes zum _RequestData Der Typ #2510.

fixierte.

  • Die „ Umkehr " scope["client"] zum None auf TestClient und #2377 #2525.
  • Remove deprecated app argument passed to httpx.Client on the TestClient xphbagux xpg Das httpx.Client-Argument wurde auf httpx.Client verschoben [#2526](](https://github.com/encode/starlette/pull/2526).

0.37.1

Februar 9, 2024

Fixierte

  • Warnung vor dem Anstieg des Fehlens von Env Config #2485.

0.37.0

am 5. Februar 2024

Hinzugefügt

  • unterstützt die WebSocket-Denial-Response-ASGI-Erweiterung #2041.

0.36.3

Februar 4, 2024

Fixierte

  • Create anyio.Event on async context #2459 erstellen.

0.36.2

  1. Februar 2024

Fixierte

  • Das Upgrade python-multipart zu 0.0.7 von 13e5c26.
  • Avoid Duplicate Charset auf Content-Type #2443.)ist ein).

0.36.1

Januar 23, 2024

Fixierte

  • Prüfen Sie, ob "Erweiterungen" vor dem Einchecken der Erweiterung #2438.

0.36.0

  1. Januar 2024

hinzugefügt wurde.

  • Add-Unterstützung für ASGI pathsend extension #2435.
  • cancel ein WebSocketTestSession auf Close #2427.
  • erhöht WebSocketDisconnect wenn WebSocket.send() IOError excepts #2425.
  • erhöht FileNotFoundError, wenn die env_file-Parameter auf Config nicht gültig sind #2422).

0.35.1

Januar 11, 2024

fixierte.

  • Stoppt die Verwendung des deprecated "method"-Parameters im FileResponse-Innenraum von StaticFiles #2406.#2406).](xpbatix))). xphbasex ist ein[.
  • macht typing-extensions optional wieder #2409.

0.35.0

Januar 11, 2024

hinzugefügt wurde.

  • fügte *args zu Middleware hinzu und verbesserte seinen Typhinweis #2381.

fixierte.

  • verwendet Iterable anstelle von Iterator auf iterate_in_threadpool#2362

Veränderung

  • verarbeitet root_path, um die Kompatibilität mit installierten ASGI-Anwendungen und WSGI #2400 zu erhalten.
  • ändert scope["client"] zu None unter TestClient#2377

0.34.0

vom 16. Dezember 2023

hinzugefügt wurde.

  • Verwenden ParamSpec Verwendet für run_in_threadpool #2375 von
  • wurde um UploadFile.__repr__#2360 erweitert.

fixierte.

  • konsolidierte URLs korrekt auf TestClient#2376.
  • berücksichtigt schwache ETags auf StaticFiles#2334.

bereits überholt.

  • hat den FileResponse(method=...)-Parameter #2366 eingestellt.

0.33.0

Der 1. Dezember 2023

hinzugefügt wurde.

  • Jede einzelne Route / WebSocketRoute hinzufügen middleware #2349 von
  • Jede einzelne Router Hinzufügen middleware #2351 von

fixierte.

  • Bitte nicht abdecken! "path" und "root_path" Schlüsselanhänger #2352
  • werden ensure_ascii=False Geschaffen in json.dumps() nach oben, für WebSocket.send_json() und #2341

0.32.0.post1

Der 5. November 2023

fixierte.

  • Fallback von mkdocs-material von 9.1.17 auf 9.4.7 #2326.

0.32.0

Der 4. November 2023

hinzugefügt wurde.

  • in der WebSocketDisconnect nach oben senden. reason #2309 von
  • fügt den domain-Parameter zu SessionMiddleware#2280 hinzu.

Änderung; Änderung; Änderung

  • wurde von HTMLResponse anstelle von Response auf _TemplateResponse#2274 geerbt.
  • stellt den Response.render-Typ-Kommentar auf seinen Status #2264 vor 0.31.0 zurück.

0.31.1

vom 26. August 2023

fixierte.

  • Reparieren als exceptiongroup Importfehler #2231, wenn nicht verfügbar.
  • Einrichtung einer benutzerdefinierten Jinja-Umgebung url_for Die globale Variable #2230.

0.31.0

Der 24. Juli 2023

hinzugefügt wurde.

  • unterstützt offiziell Python 3.12 #2214.
  • unterstützt AnyIO 4.0 #2211.
  • Strictly type annotate Starlette (strikter Modus auf mypy)#2180).

Fixierte

  • Don't group duplizierte Köpfe auf einem einzelnen String bei Verwendung des TestClient #2219.

0.30.0

  1. Juli 2023 und

Entfernt

  • Unterstützung für Drop Python 3.7 #2178.

0.29.0

vom 13. Juli 2023

Hinzugefügt

  • Add follow_redirects Parameter zu TestClient [#2207](https://github.com/encode/starlette/pull/2207](. xphcenoxix #2207](](https://github.com/encode/starlette/pull/2207) ist ein Muss.
  • add hinzufügen __str__ zu HTTPException und WebSocketException #2181.
  • Warnung vor Benutzern beim Verwenden lifespan Zusammen mit on_startup/on_shutdown #2193.
  • Collect routes von Host bis zur Erzeugung des OpenAPI-Schemas #2183.
  • Add request Argument zu TemplateResponse #2191).

fixierte .

  • Stop body_stream im Fall more_body=False auf BaseHTTPMiddleware #2194.

0.28.0

7 . Juni 2023 und

verändert hat

  • Reuse Request's body buffer für call_next in BaseHTTPMiddleware #1692.
  • Move Exception Handling Logik auf Route #2026.[#2026https://github.com/encode/starlette/pull/2026https://github.com/encode/starlette/pull/2026x).https://github.com/encode/starlette/pull/2026ist ein weiteres Produkt von[.

hinzugefügt wurde .

  • werden env Parameter hinzufügen Jinja2Templates In und im Stich lassen **env_options #2159 natürlich
  • hat die explizite Fehlermeldung #2177 hinzugefügt , wenn httpx nicht installiert ist .

fixierte .

  • erlaubt die Verwendung des " name " - Arguments auf templates url_for()#2127 .

0.27.0

Der 16 . Mai 2023

In diesem Release wurde die Sicherheitslücke " Path Traversal " in StaticFiles behoben , die Sie im vollständigen Sicherheitsbulletin nachlesen können : https://github.com/encode/starlette/security/advisories/GHSA-v5gw-mw7f-84px .

hinzugefügt wurde .

  • verkleinert JSON-WebSocketdaten mit send_json https://github.com/encode/starlette/pull/2128

fixierte .

  • im StaticFiles Nach 1797 de 4 wurde commonprefix Ersetzt durch commonpath 。
  • ImportErrors wird in ModuleNotFoundError #2135 konvertiert .
  • Der Inhalt der RuntimeError-Meldung wurde in websockets #2141 korrigiert .

0.26.1

Der 13 . März 2023

fixierte .

  • Fixiert den Typ von Lifespan in Starlette #2077 , um seine Unterklassen zu ermöglichen .

0.26.0.post1

  1. März 2023

Fixierte

  • Verweis von Ereignissen zu Leben auf die mkdocs. yml #2072.

0.26.0

  1. März 2023

Hinzugefügt

verändert hat

  • Veränderungen url_for Rückgabewert A URL Die instance #1385.

Fixierte

  • "Name"-Argument url_for() und url_path_for() #2050.

Depreziert

  • Deprecate on_startup und on_shutdown events #2070).

0.25.0

Februar 14, 2023

Der Fix

  • Limit die Anzahl der Felder und Dateien beim Parken multipart/form-data auf The MultipartParser Bezeichnung 8c74c2c und #2036.

0.24.0

Februar 6, 2023

hinzugefügt wurde.

  • Allow StaticFiles to follow symlinks #1683.StaticFiles Xphdix[Xphdix. xphdix[Xphdix[Xphdix ist ein sehr guter Xphdix-Computer.
  • Allow Request.form() als Context-Manager #1903.
  • size Attribute zu UploadFile hinzufügen #1405.
  • Add env_prefix argument zu Config #1990 von 1990.
  • Add template context processors #1904.)https://github.com/encode/starlette/pull/1990. ). .). . ist ein Dateisystem.
  • Unterstützung str und datetime auf expires Parameter auf der Response.set_cookie Die Methode #1908.

verändert hat

  • Lazily hat den Middleware-Stack #2017 gebaut.
  • Das file Argument muss auf UploadFile #1413ist ein
  • Verwenden Sie die Debug-Erweiterung im Kundenreaktions-Template-Erweiterung #1991.

fixierte.

  • Fix URL Parsing von IPv6 URLs auf URL.replace #1965.)#1965).](https://github.com/encode/starlette/pull/1965)).)). xphdirax)))1965 Xphdirax](ist ein sehr guter Name.

0.23.1

Dezember 9, 2022.

fixierte.

  • Nur stoppen Sie den Strom auf body_stream Wenn der Körper leer ist BaseHTTPMiddleware #1940.

0.23.0

  1. Dezember 2022

hinzugefügt wurde.

  • add hinzufügen headers Parameter für die TestClient #1966.

bereits überholt

  • stellt Starlette und Router Decorator #1897 ein.

fixierte.

  • hat Fehler #1973 für reguläre Ausdrücke in FloatConvertor behoben.

0.22.0

vom 17. November 2022

verändert hat.

  • umgeht GZipMiddleware, wenn die Antwort Content-Encoding#1901 enthält.

fixierte.

  • entfernt unerwünschte unquote() aus dem Abfrageparameter auf TestClient#1953.
  • Sicherstellen MutableHeaders._list Eigentlich ist es eine list #1917 von Importkompatibilität von* mit der nächsten Version von AnyIO#1936.

0.21.0

vom 26. September 2022

Diese Version ersetzt den TestClient Der verwendete HTTP-Client ( requests :arrow_right: httpx Da die APIs für diese Clients leicht unterschiedlich sind, kann Ihre Testsuite unterbrochen werden, damit die Migration reibungslos verläuft, wie Sie sie verwenden können. bump-testclient Werkzeuge.

Änderung (bzw. Änderung)

  • in TestClient#1376 ersetzt requests durch httpx

hinzugefügt wurde.

  • Add WebSocketException and support for WebSocket-Ausschlusshandler #1263.).
  • Add middleware Parameter zur Mount Klasse #1649.
  • Offizielle Unterstützung für Python 3.11 #1863.
  • Verbesserung __repr__ für Route Classes #1864.

Fixierte

  • Fix Bug auf Which BackgroundTasks Kann nicht verwendet werden, wenn BaseHTTPMiddleware und Client disconnected #1715.

0.20.4

vom 28. Juni 2022

Fixierte

  • Remove converter from path when generating OpenAPI-Schema (Konverter vom Pfad entfernen beim Generieren des OpenAPI-Schemas) #1648.

0.20.3

Juni 10, 2022 sein.

Fixierte

  • Rückblende „ Allow " StaticFiles Folgen Sie Symlinks #1681.

0.20.2

vom 7. Juni 2022

fixierte.

  • Fix regression auf Route paths mit Farben #1675.
  • allow StaticFiles Folgen Sie Symlinks #1337.

0.20.1

  1. Mai 2022 oder

fixierte.

  • Improve Detection of async c-callables #1444.* Improve Detection of async c-callables [#1444](](https://github.com/encode/starlette/pull/1444[.
  • Send 400 (Bad Request) when (Schlechter Aufruf) boundary vermisst wird #1617.
  • Send 400 (Bad Request) when missing "name" field on (Schlechter Aufruf) Content-Disposition Der Header #1643.
  • Senden Sie keine leeren Daten an StreamingResponse auf BaseHTTPMiddleware #1609.
  • Add hinzufügen __bool__ Dunst für Secret #1625.

0.20.0

Der 3. Mai 2022

Entfernt

0.19.1

vom 22. April 2022

fixierte.

  • -Fix-Referenz von Route.name beim Erstellen von Methoden #1553.
  • weiter Avoid TypeError auf websocket.disconnect Wenn der Code None #1574.

überholt sind.

  • Deprecate WS_1004_NO_STATUS_RCVD und WS_1005_ABNORMAL_CLOSURE im Favor von WS_1005_NO_STATUS_RCVD und WS_1006_ABNORMAL_CLOSURE, als die vorherigen Konstanten nicht auf die WebSockets Specs) #1580.)ist ein

0.19.0

  1. März 2022

hinzugefügt wurde.

  • -Error-Handler wird immer laufen, auch wenn der Fehler auf einem Hintergrundtask passiert #761.
  • headers Parameter zu HTTPException hinzufügen #1435.[ist ein
  • Interne Reaktionen mit 405 Statuscode eingearbeitet Allow Header, wie beschrieben Nach RFC 7231 #1436.
  • in der JSONResponse innerhalb von. content Parameter sind jetzt erforderlich #1431.
  • Fügen Sie einen benutzerdefinierten URL-Konverter Registrierung #1437.
  • fügt dem FileResponse#1266 ein Content-Disposing-Typ-Argument hinzu.
  • Fügen Sie im Bedarfsdekorator #920 den nächsten Abfrageparameter zusammen mit der ursprünglichen Anforderungs-URL hinzu.
  • fügt raw_path zum TestClient-Bereich #1445 hinzu.
  • Der gemeinsame Betreiber wird hinzugefügt. MutableHeaders In der #1240
  • Die fehlenden Routendetails werden auf der Debugging-Seite #1363 angezeigt.
  • ändert den erforderlichen Versionsbereich von anyio auf >=3.4.0,<5.0#1421 und #1460.
  • Fügt die typing-extensions>=3.10-Anforderung hinzu-#1475 nur in Versionen vor Python 3.10.

fixierte.

  • verhindert, dass BaseHTTPMiddleware den Fehler StreamingResponse und die installierte Anwendung #1459 versteckt.
  • SessionMiddleware verwendet den expliziten path=...-Code anstelle des Standard-ASGI "root_path"#1512.
  • Request.client Erfüllt jetzt die ASGI-Norm #1462.
  • Erheben Sie früh gegen Missing Frontier #1349 KeyError 。

bereits überholt

  • Deprecate WSgiiddleware in favor von a2wsgi #1504.
  • Deprecate für run_until_first_complete #1443.

0.18.0

  1. Januar 2022

Hinzugefügt

  • Change-default-Chunk-Größe von 4Kb auf 64Kb FileResponse #1345.
  • Add Support für functools.partial in WebSocketRoute #1356.[#1356)ist ein
    • StaticFiles-Pakete mit Verzeichnis #1350.
  • Umweltfreundliche Optionen in Jinja2Templates #1401.
  • Allow HEAD Methode auf HttpEndpoint #1346.)ist ein
  • Weitere Header finden Sie hier websocket.accept Botschaft #1361 und #1422.
  • add hinzufügen reason zu WebSocket Schließen ASGI Event #1417.
  • Headers-Attribute hinzufügen UploadFile #1382.
  • Don't Omit Content-Length Header für Content-Length: 0 Cases sind #1395.
  • Don't set headers for responses with 1xx, 204 and 304 status code #1397.
  • SessionMiddleware.max_age Jetzt Accounts None So kann ein Cookie so lange dauern wie die Browsersitzung #1387.

fixierte.

  • Der Tweak hashlib.md5() Die Funktion on FileResponse ETag Generation: Der Parameter usedforsecurity Die Fahne wird gesetzt False Diese fixe einen fehler auf diesem system verursacht. mit FIPS Enabled wird #1366 und #1410.
  • Fix path_params Typ auf url_path_for() Methode i.e. turn str into Any #1341.)ist ein
  • Host jetzt ignores port auf Routing #1322.

0.17.1

  1. Dezember 2021

fixierte.

  • Der Fix IndexError in der Authentifizierung requires when Wrapped Function Argumente sind zwischen verteilt *args und **kwargs #1335.

0.17.0

vom 4. November 2021

hinzugefügt wurde.

  • Response.delete_cookie Sie wenden sich an dieselben Parameter wie Response.set_cookie #1228.
  • aktualisiert den Jinja2Templates-Konstruktor auf allow PathLike #1292.[ist ein

fixierte.

  • Fix BadSignature Exception Handling bei SessionMiddleware #1264.
  • Wechseln Sie den HTTPConnection.__getitem__ Rückgabetyp von str nach typing.Any #1118.)ist eine
  • Ändern des ImmutableMultiDict.getlist-Rückgabetyps von typing.List[str] nach typing.List[typing.Any] #1235.
  • Die Handle OSError Ausnahmen beim StaticFiles #1220.
  • Fix StaticFiles 404.html im HTML-Modus #1314.
  • ExceptionGroup in error views under a BaseHTTPKiddleware ExceptionGroup in Fehler Ansichten unter einer BaseHTTPKiddleware #1262.

Entfernt

  • GraphQL Unterstützung entfernen #1198.

0.16.0

vom 19. Juli 2021

hinzugefügt wurde.

fixierte.

  • starlette.websockets.WebSocket Die Instanzen sind jetzt hashable und kompatibel mit Identitäten #1039
  • Eine Anzahl von FIX im Zusammenhang mit laufenden Task-Gruppen im Leben #1213, #1227

Heruntergeladen/entfernt.

  • Die Methode starlette.templates.Jinja2Templates.get_env wurde entfernt #1218
  • The ClassVar starlette.testclient.TestClient.async_backend wurde entfernt, das Backend wird jetzt mit Konstruktor kwargs konfiguriert #1211)
  • Eine Async-Generator-Funktion oder eine Generator-Funktion verwenden starlette.routing.Router(lifespan=) Du solltest dein Leben ruinieren. → @contextlib.asynccontextmanager. #1227 #1110

0.15.0

vom 23. Juni 2021

Aus diesem Grund ist Starlette jetzt auf AnyIO angewiesen und es gibt einige kleinere API-Änderungen Eine weitere wichtige Änderung in dieser Version ist die Einstellung der integrierten GraphQL-Unterstützung.

hinzugefügt wurde.

  • Starlette unterstützt jetzt Trio als asynchrone Laufzeit über AnyIO-#1157.
  • TestClient.websocket_connect() Sie müssen nun als Download-Manager verwendet werden
  • Vorläufige Unterstützung für Python 3.10-#1201. Der Komprimierungsgrad, der von* in GZipMiddleware verwendet wird, ist jetzt einstellbar-#1128.

fixierte.

Einige Korrekturen an der CORSMiddleware wurden von* unter #1111,#1112,#1113,#1199 vorgenommen. * Verbessert die Ausnahmemeldung bei wiederholten Pfadparameternamen-#1177. * RedirectResponse verwendet jetzt die quote-Codierung anstelle der quote_plus-Codierung im Location-Header, um das Verhalten in anderen Frameworks wie Django besser abzugleichen-#1164. * In mehr Fällen ist die Ausnahmeursache jetzt erhalten geblieben-#1158. * Wenn die Anwendung eingebunden ist, verwendet der Sitzungscookie nun den ASGI-Stammpfad-#1147. * Ein Fehler im Cache beim Löschen statischer Dateien in bestimmten Situationen wurde behoben-#1023. * verbessert die Speicherauslastung von BaseHTTPMiddleware bei der Verarbeitung großer Antworten-behoben durch #1157

gelöscht/gelöscht

  • Built-in GraphQL unterstützt durch die GraphQLApp Klassen wurden unterdrückt und werden in einem zukünftigen Release entfernt. #619 GraphQL wird in Python 3.10 nicht unterstützt.
  • Die executor Parameter für GraphQLApp entfernt wurde. benutzt. executor_class statt.
  • Die workers Parameter zum WSGIMiddleware Das hatte seit Starlette v0.6.3 keine Wirkung mehr.

0.14.2

Februar 2, 2021

Fixierte

  • Fixed ServerErrorMiddleware-Kompatibilität mit Python 3.9.1/3.8.7 when debug mode is enabled-#1132.
  • Fixed Unclosed Socket ResourceWarning beim Verwenden des TestClient mit WebSocket-Endpunkten-#1132.
  • verbesserte Erkennung von async-Endpunkten wurde in functools.partial auf Python 3.8 +-#1106).

0.14.1

vom 9. November 2020

Entfernt

  • UJSONResponse Es wurde entfernt (diese Änderung wurde angekündigt, um in 0.14.0 integriert zu werden). Die Dokumentation for how to implement responses using custom JSON serialization-wie kann ich mit Hilfe von JSON-Serialisierung antworten #1074.

0.14.0

Der 8. November 2020

hinzugefügt wurde.

  • Starlette unterstützt nun offiziell Python 3.9.
  • In StreamingResponse, allow custom async iterator such as objects from classes implementing __aiter__.__aiter__ ist ein Async-Iterator, der Objekte von Klassen zur Implementation von __aiter__ verwendet.
  • Allow Usage of functools.partial async handlers in den Python-Versionen 3.6 und 3.7.
  • Add 418 Ich bin ein Teapot-Statuscode.

verändert hat

  • Create tasks from handler coroutines, bevor sie an asyncio.wait senden.
  • Benutzung format_exception Außer von format_tb im ServerErrorMiddleware Das S debug Antworten.
  • wird leichter mit Handler-Argumenten, wenn Sie den requires-Decorator verwenden.

0.13.8

  • Revert Queue(maxsize=1) fix für BaseHTTPMiddleware middleware classes und streaming responses.

  • Der StaticFiles Konstruktor jetzt erlaubt pathlib.Path zusätzlich zu Strings für Sie directory Das Argument.

0.13.7

  • Fix High Memory Usage beim Verwenden von BaseHTTPMiddleware Middleware Klassen und Streaming-Antworten.

0.13.6

  • Fix 404 Fehler mit StaticFiles.

0.13.5

  • fügt Unterstützung für die Starlette(lifespan=...)-Funktion hinzu.
  • Führen Sie eine robustere Pfadüberprüfungen in der StaticFiles-Anwendung durch.
  • Die WSGI PATH_INFO-Codierung wurde behoben.
  • RedirectResponse akzeptiert jetzt einen optionalen background Parameter.
  • Zulassen, dass Routen reguläre Ausdrücke enthalten.
  • Betrachten Sie den "Körper" von ASGI HTTP als optionalen Schlüssel.
  • Verwenden Sie den Threadpool nicht zum Schreiben von hochgeladenen Dateien in den Speicher.

0.13.0

  • Der Wechsel von Ort zu Ort, um die App-Konfiguration im Initialisierungsstil zu erleichtern, bedeutet, den Dekorationsstil zugunsten deklarativer Routingtabellen und Middleware-Definitionen aufzugeben.

0.12.12

  • behebt request.url_for()-Probleme bei "verschachtelten Installationen".

0.12.11

  • Repariert request.url_for(), wenn ASGI root_path verwendet wird.

0.12.1

  • Hinzufügen URL.include_query_params(**kwargs)
  • hinzufügen URL.replace_query_params(**kwargs)
  • Hinzufügen URL.remove_query_params(param_names)
  • request.state Die richtige Persistenz in der Mitte.
  • fügt die request.scope-Schnittstelle hinzu.

0.12.0

  • Umstellung auf ASGI 3.0.
  • Reparatur der CORS-Middleware.
  • Add hinzufügen StaticFiles(html=True) Unterstützung.
  • Fix path quoting in redirect responses.

0.11.1

  • Add request.state interface zum Speichern zusätzlicher arbiträrer Informationen.
  • Support Disabling GraphiQL mit GraphQLApp(..., graphiql=False).

0.11.0

  • DatabaseMiddleware Jetzt ist es in der Gunst des databases
  • Templates sind nicht länger auf der Anwendungsinstanz konfiguriert. templates = Jinja2Templates(directory=...) und return templates.TemplateResponse('index.html', {"request": request})
  • Die Schema-Generation wird nicht länger auf die Anwendungsinstanz angewendet. schemas = SchemaGenerator(...) and return schemas.OpenAPIResponse(request=request)
  • LifespanMiddleware Er leidet unter dem Problem des Routers-basierend auf dem Lifespan Handling.
  • Application Instances jetzt als routes Argument,Starlette(routes=[...])
  • Heute umfasst die Modellgeneration mounted routes.

0.10.6

  • Add Lifespan Routing-Komponente.

0.10.5

  • Ensure templating erfordert nicht zwingend jinja2 installiert zu werden.

0.10.4

  • Templates werden jetzt unabhängig von der Anwendungsinstanz konfiguriert. templates = Jinja2Templates(directory=...) Existing api remains in place, but is no longer documented, and will be deprecated in due course. siehe die template-Dokumentation für weitere Details.

0.10.3

  • wird in das unabhängige databases-Paket verlegt, das von DatabaseMiddleware installiert wurde. Existing api remains in place, but is no longer documented, and will be deprecated in due course.

0.10.2

  • Don't Drop Explicit Port Numbers on Redirects from nicht auf die Portnummer klicken HTTPSRedirectMiddleware.

0.10.1

  • Unterstützung für MySQL-Datenbanken wurde hinzugefügt.
  • Fügen Sie eine Route basierend auf dem Hauptcomputer hinzu.

0.10.0

  • WebSockets sendet/empfängt nun standardmäßig JSON über Textdatenrahmen für binäre Frames mit .send_json(data, mode="binary") und .receive_json(mode="binary").
  • GraphQLApp Akzeptieren Sie jetzt eine executor_class Diese Parameter sollten verwendet werden, anstatt die vorhandenen executor Die Parameter lösen das Problem der Instanziierung von asynchronen Aktuatoren, die erwartet werden, bevor die Ereignisschleife eingerichtet wird. executor Parameter werden in der nächsten mittleren oder größeren Version veraltet sein. Die -Authentifizierung und @requires-Dekoratoren unterstützen jetzt WebSocket-Endpunkte. Die Klassen MultiDict und ImmutableMultiDict sind in uvicorn.datastructures verfügbar.
  • QueryParams wird jetzt mit dem *args, **kwargs-Parameter im Standarddictionary-Stil instanziiert.

0.9.11

  • Session-Cookies enthalten nun neben der bestehenden signierten Ablaufzeit auch „ expires "des Browsers.
  • request.form() Gibt nun eine Multidictionary-Schnittstelle zurück.
  • Wenn mehrere identische Schlüsselelemente vorhanden sind, werden die Abfrageparameter Multi-Dictionary-Implementierungen jetzt für .keys() 、 .values() und .items() Verhalten genauer widerspiegeln kann. dict 。
  • während des gesamten Prozesses verwendet. urlsplit statt vielmehr urlparse 。

0.9.10

  • unterstützt @requires(...) in klassenmethoden.
  • URL-Maskierung auf Formulardaten anwenden.
  • Automatische Unterstützung HEAD Antrag.
  • wurde um await request.is_disconnected() erweitert.
  • Der operationName wird an ein GraphQL-Aktor übergeben.

0.9.9

  • fügt TemplateResponse hinzu.
  • CommaSeparatedStrings Datatyp hinzufügen.
  • Add BackgroundTasks for multiple tasks.für mehrere Tasks hinzufügen.
  • Common subclass for Request and WebSocket, to eg. share session functionality.
  • expose remote address with request.client expose remote address with request.client.* expose Remote-Adresse mit request.client.

0.9.8

  • add request.database.executemany hinzufügen

0.9.7

  • Ensure that AuthenticationMiddleware Handles Lifespan Messages Correctly.AuthenticationMiddleware-Hände leben Nachrichten korrekt.

0.9.6

  • AuthenticationMiddleware und @requires() decorator hinzufügen.

0.9.5

  • unterstützt entweder str oder Secret für SessionMiddleware(secret_key=...).

0.9.4

  • Add config.environ hinzufügen.
  • Add datastructures.Secret hinzufügen.
  • hinzufügen datastructures.DatabaseURL.

0.9.3

  • Add hinzufügen config.Config(".env")

0.9.2

  • Add optional database support (Optionale Datenbankunterstützung)
  • request zum GraphQL-Kontext hinzufügen.
  • hide jedes passwort, das in URL.__repr__ enthalten ist

0.9.1

  • Handle startup/shutdown errors properly (Fehler beim Starten).

0.9.0

  • TestClient Kann jetzt als Context-Manager verwendet werden, während LifespanContext.
  • Start-ups und Shutdown-Ereignisse sind sichtbar durch den Middleware-Stack.

0.8.8

  • Bessere Unterstützung für Third-Party API Schema Generators.

0.8.7

  • Unterstützt chunked requests mit TestClient.
  • Cleanup asyncio tasks properly mit wsgimiddleware.
  • -Unterstützung mit TestClient innerhalb von Endpunkten für Service-Blocking.

0.8.6

  • Session-Cookies werden nun auf dem Root-Path gesetzt.

0.8.5

  • Unterstützung für URL Translator.
  • unterstützt HTTP 304-Cache-Antworten von StaticFiles.
  • Löst das Problem der Zeichenumwandlung in Formulardaten.

0.8.4

  • Das Subjekt wird in der Antwort als leer angenommen.

0.8.3

  • fügt @app.route() den Parameter name hinzu.
  • Verwenden Sie den "Host"-Header für die URL-Rekonstruktion.

0.8.2

Statisches Dokument

  • StaticFiles liest keine Dateien mehr als Antwort auf HEAD-Anfragen.

0.8.1

Muster modellieren.

  • Verwenden Sie Jinja2, um Standardvorlagenkonfigurationen hinzuzufügen.

Folgende Inhalte sind erlaubt:

Beispiel: Starlette (template_directory ="templates")

@ app. route ('/')
async def Homepage (Anforderung):
    #`url_for` ist im Inneren des Tempels verfügbar.
    Vorlage = app. get_template ('index.html')
    content = template. render (Anforderung = Anforderung)
    Zurück zu HTMLResponse (Content)

0.8.0

Ausnahme

  • unterstützt @app.exception_handler(404).
  • Stellen Sie sicher, dass die verarbeiteten Ausnahmen nicht vom Middleware-Stack als Fehler behandelt werden.

Mitten im Gespräch

  • Add hinzufügen max_age Verwenden Sie timestamp-signierte Cookies. defaults to two weeks.

Die Cookies

  • Ensure-Cookies sind streng HTTP-korrekt.

Statistische Files

  • Überprüfen Sie die Existenz des Verzeichnisses bei der Installation.

0.7.4

Die Concurrency

  • add hinzufügen starlette.concurrency.run_in_threadpool Jetzt Handles contextvar Unterstützung.

0.7.3

Das Routing

  • Add hinzufügen name= Unterstützt To app.mount() Dies erlaubt eG: app.mount('/static', StaticFiles(directory='static'), name='static').

0.7.2

Die Middleware

  • Add Support für @app.middleware("http") Der Decorator.

Das Routing

  • Add "Endpoint" zu ASGI scope.

0.7.1

Debug-Tracebacks erstellen

  • Verbesserung der Debug-Traceback-Information und-Styling.

Das URL-Routing

  • Support mounted URL lookups with "path =", eg. unterstützt URLs mit "path =", eg. url_for('static', path=...).
  • Support nested URL lookups, eg.url_for('admin:user', username=...).url_for('admin:user', username=...) Unterstützung von nested URL lookups, eg.
  • Redirect Slashes werden unterstützt.
  • Fügen Sie www Redirect Unterstützung hinzu.

Hintergrund-Aufgaben

  • Add background task support to FileResponse and StreamingResponse.* Add background task support to FileResponse and StreamingResponse.

0.7.0

API-Schemaunterstützung

  • Add app.schema_generator = SchemaGenerator(...).
  • Add app.schema Eigenschaft.
  • add OpenAPIResponse(...).

Das GraphQL Routing

  • Drop app.add_graphql_route("/", ...) in hinter mehr consistent app.add_route("/", GraphQLApp(...)).

0.6.3

Routing-API einrichten

  • Unterstützt das Routing zu Methoden.
  • Ensure url_path_for works with Mount ('/{some_path_params}') Bearbeiten
  • Fix Router (default =) Argument.
  • unterstützt wiederholte Paths wie:@app.route("/", methods=["GET"]),@app.route("/", methods=["POST"])
  • Verwenden Sie den Standard-ThreadPoolExecutor für alle Sync-Endpunkte.

0.6.2

Die SessionMiddleware

Erhöhung ja. request.session Unterstützung, und SessionMiddleware 。

0.6.1

BaseHTTP-Zwischenspeicher

Hinzugefügt ja. BaseHTTPMiddleware Es bietet eine Standard-Anfrage/Antwort-Schnittstelle über herkömmliche ASGI-Middleware.

Das bedeutet, dass Sie ASGI-Middleware schreiben und trotzdem auf der Anforderungs-/Antwortebene arbeiten können, anstatt ASGI-Nachrichten direkt zu verarbeiten.

von starlette. applications import Starlette
von starlette. middleware. base import BaseHTTPIddleware


Customclass Middleware (BaseHTTPIddleware) ist eine
    async def dispatch (self, request, call_next):(für den Dispatch)
        request = await call_next (Anforderung)
        response. headers 'Custom-Header']=' Beispiel '
        return antwort zurück


Beispiel = Starlette ()
add_middleware (CustomMiddleware)(Hinzufügen)

0.6.0

Siehe. path_params.

0.6 Die größte Änderung besteht darin, dass Endpunktsignaturen nicht mehr sind:

async def func (Anforderung: Request, ** kwargs)-> Antwort

Stattdessen verwenden wir nur:

async def func (Request: Request)-> Antwort

Der Pfadparameter ist in der Form request.path_params in Anfragen verfügbar.

Dies ist anders als die meisten Python-Webframeworks, aber ich denke, es wird irgendwann konsistenter während des gesamten Prozesses.

url_für ()

Request und WebSocketSession unterstützen jetzt die URL-Umkehrung mit request.url_for(name, **path_params), einer Methode, die eine vollständig qualifizierte URL-Instanz einer URL-Instanz zurückgibt, die ein Zeichenfolge-ähnliches Objekt ist.

app. url_path_for ()(die englische Bezeichnung kann technisch gesehen der Name einer bestimmten Funktion oder Methode sein, aber im chinesischen Kontext wird manchmal die englische Version des Originaltextes beibehalten, um die Genauigkeit und Professionalität zu gewährleisten, so dass die Übersetzung hier direkt in der englischen Form des Originaltextes beibehalten wird).

Anwendungen unterstützen jetzt die Verwendung von app.url_path_for(name, **path_params) für die URL-Pfadumkehr Diese Methode gibt eine Instanz von URL zurück, auf der ein Pfad und ein Schema festgelegt sind, wobei es sich bei der URL-Instanz um ein Zeichenfolge-ähnliches Objekt handelt, das nur den Pfad zurückgibt, wenn eine Konvertierung in eine Zeichenfolge erzwungen wird.

App. unterwegs.

Die Anwendung unterstützt nun einen .routes-Parameter, der eine Liste von [Route|WebSocketRoute|Mount] zurückgibt.

Route, WebSocket-Route, eingehängt

Low-Level-Komponenten zum Router Jetzt mit @app.route() 、 @app.websocket_route() und app.mount() Unterschrift entspricht.