committed by
GitHub
643 changed files with 37192 additions and 21693 deletions
@ -8,44 +8,51 @@ Aus diesem Grund werden diese รผblicherweise in Umgebungsvariablen bereitgestell |
|||||
|
|
||||
## Umgebungsvariablen |
## Umgebungsvariablen |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Wenn Sie bereits wissen, was โUmgebungsvariablenโ sind und wie man sie verwendet, kรถnnen Sie gerne mit dem nรคchsten Abschnitt weiter unten fortfahren. |
|
||||
|
Wenn Sie bereits wissen, was โUmgebungsvariablenโ sind und wie man sie verwendet, kรถnnen Sie gerne mit dem nรคchsten Abschnitt weiter unten fortfahren. |
||||
|
|
||||
|
/// |
||||
|
|
||||
Eine <a href="https://de.wikipedia.org/wiki/Umgebungsvariable" class="external-link" target="_blank">Umgebungsvariable</a> (auch bekannt als โenv varโ) ist eine Variable, die sich auรerhalb des Python-Codes im Betriebssystem befindet und von Ihrem Python-Code (oder auch von anderen Programmen) gelesen werden kann. |
Eine <a href="https://de.wikipedia.org/wiki/Umgebungsvariable" class="external-link" target="_blank">Umgebungsvariable</a> (auch bekannt als โenv varโ) ist eine Variable, die sich auรerhalb des Python-Codes im Betriebssystem befindet und von Ihrem Python-Code (oder auch von anderen Programmen) gelesen werden kann. |
||||
|
|
||||
Sie kรถnnen Umgebungsvariablen in der Shell erstellen und verwenden, ohne Python zu benรถtigen: |
Sie kรถnnen Umgebungsvariablen in der Shell erstellen und verwenden, ohne Python zu benรถtigen: |
||||
|
|
||||
=== "Linux, macOS, Windows Bash" |
//// tab | Linux, macOS, Windows Bash |
||||
|
|
||||
<div class="termy"> |
<div class="termy"> |
||||
|
|
||||
```console |
```console |
||||
// Sie kรถnnten eine Umgebungsvariable MY_NAME erstellen mittels |
// Sie kรถnnten eine Umgebungsvariable MY_NAME erstellen mittels |
||||
$ export MY_NAME="Wade Wilson" |
$ export MY_NAME="Wade Wilson" |
||||
|
|
||||
// Dann kรถnnten Sie diese mit anderen Programmen verwenden, etwa |
// Dann kรถnnten Sie diese mit anderen Programmen verwenden, etwa |
||||
$ echo "Hello $MY_NAME" |
$ echo "Hello $MY_NAME" |
||||
|
|
||||
|
Hello Wade Wilson |
||||
|
``` |
||||
|
|
||||
|
</div> |
||||
|
|
||||
Hello Wade Wilson |
//// |
||||
``` |
|
||||
|
|
||||
</div> |
//// tab | Windows PowerShell |
||||
|
|
||||
=== "Windows PowerShell" |
<div class="termy"> |
||||
|
|
||||
<div class="termy"> |
```console |
||||
|
// Erstelle eine Umgebungsvariable MY_NAME |
||||
|
$ $Env:MY_NAME = "Wade Wilson" |
||||
|
|
||||
```console |
// Verwende sie mit anderen Programmen, etwa |
||||
// Erstelle eine Umgebungsvariable MY_NAME |
$ echo "Hello $Env:MY_NAME" |
||||
$ $Env:MY_NAME = "Wade Wilson" |
|
||||
|
|
||||
// Verwende sie mit anderen Programmen, etwa |
Hello Wade Wilson |
||||
$ echo "Hello $Env:MY_NAME" |
``` |
||||
|
|
||||
Hello Wade Wilson |
</div> |
||||
``` |
|
||||
|
|
||||
</div> |
//// |
||||
|
|
||||
### Umgebungsvariablen mit Python auslesen |
### Umgebungsvariablen mit Python auslesen |
||||
|
|
||||
@ -60,10 +67,13 @@ name = os.getenv("MY_NAME", "World") |
|||||
print(f"Hello {name} from Python") |
print(f"Hello {name} from Python") |
||||
``` |
``` |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Das zweite Argument fรผr <a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> ist der zurรผckzugebende Defaultwert. |
|
||||
|
Das zweite Argument fรผr <a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> ist der zurรผckzugebende Defaultwert. |
||||
|
|
||||
Wenn nicht angegeben, ist er standardmรครig `None`. Hier รผbergeben wir `"World"` als Defaultwert. |
Wenn nicht angegeben, ist er standardmรครig `None`. Hier รผbergeben wir `"World"` als Defaultwert. |
||||
|
|
||||
|
/// |
||||
|
|
||||
Dann kรถnnten Sie dieses Python-Programm aufrufen: |
Dann kรถnnten Sie dieses Python-Programm aufrufen: |
||||
|
|
||||
@ -114,8 +124,11 @@ Hello World from Python |
|||||
|
|
||||
</div> |
</div> |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Weitere Informationen dazu finden Sie unter <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: Config</a>. |
|
||||
|
Weitere Informationen dazu finden Sie unter <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: Config</a>. |
||||
|
|
||||
|
/// |
||||
|
|
||||
### Typen und Validierung |
### Typen und Validierung |
||||
|
|
||||
@ -151,8 +164,11 @@ $ pip install "fastapi[all]" |
|||||
|
|
||||
</div> |
</div> |
||||
|
|
||||
!!! info |
/// info |
||||
In Pydantic v1 war das im Hauptpackage enthalten. Jetzt wird es als unabhรคngiges Package verteilt, sodass Sie wรคhlen kรถnnen, ob Sie es installieren mรถchten oder nicht, falls Sie die Funktionalitรคt nicht benรถtigen. |
|
||||
|
In Pydantic v1 war das im Hauptpackage enthalten. Jetzt wird es als unabhรคngiges Package verteilt, sodass Sie wรคhlen kรถnnen, ob Sie es installieren mรถchten oder nicht, falls Sie die Funktionalitรคt nicht benรถtigen. |
||||
|
|
||||
|
/// |
||||
|
|
||||
### Das `Settings`-Objekt erstellen |
### Das `Settings`-Objekt erstellen |
||||
|
|
||||
@ -162,23 +178,33 @@ Auf die gleiche Weise wie bei Pydantic-Modellen deklarieren Sie Klassenattribute |
|||||
|
|
||||
Sie kรถnnen dieselben Validierungs-Funktionen und -Tools verwenden, die Sie fรผr Pydantic-Modelle verwenden, z. B. verschiedene Datentypen und zusรคtzliche Validierungen mit `Field()`. |
Sie kรถnnen dieselben Validierungs-Funktionen und -Tools verwenden, die Sie fรผr Pydantic-Modelle verwenden, z. B. verschiedene Datentypen und zusรคtzliche Validierungen mit `Field()`. |
||||
|
|
||||
=== "Pydantic v2" |
//// tab | Pydantic v2 |
||||
|
|
||||
|
```Python hl_lines="2 5-8 11" |
||||
|
{!> ../../../docs_src/settings/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
|
//// tab | Pydantic v1 |
||||
|
|
||||
```Python hl_lines="2 5-8 11" |
/// info |
||||
{!> ../../../docs_src/settings/tutorial001.py!} |
|
||||
``` |
In Pydantic v1 wรผrden Sie `BaseSettings` direkt von `pydantic` statt von `pydantic_settings` importieren. |
||||
|
|
||||
|
/// |
||||
|
|
||||
|
```Python hl_lines="2 5-8 11" |
||||
|
{!> ../../../docs_src/settings/tutorial001_pv1.py!} |
||||
|
``` |
||||
|
|
||||
=== "Pydantic v1" |
//// |
||||
|
|
||||
!!! info |
/// tip | "Tipp" |
||||
In Pydantic v1 wรผrden Sie `BaseSettings` direkt von `pydantic` statt von `pydantic_settings` importieren. |
|
||||
|
|
||||
```Python hl_lines="2 5-8 11" |
Fรผr ein schnelles Copy-and-paste verwenden Sie nicht dieses Beispiel, sondern das letzte unten. |
||||
{!> ../../../docs_src/settings/tutorial001_pv1.py!} |
|
||||
``` |
|
||||
|
|
||||
!!! tip "Tipp" |
/// |
||||
Fรผr ein schnelles Copy-and-paste verwenden Sie nicht dieses Beispiel, sondern das letzte unten. |
|
||||
|
|
||||
Wenn Sie dann eine Instanz dieser `Settings`-Klasse erstellen (in diesem Fall als `settings`-Objekt), liest Pydantic die Umgebungsvariablen ohne Berรผcksichtigung der Groร- und Kleinschreibung. Eine Variable `APP_NAME` in Groรbuchstaben wird also als Attribut `app_name` gelesen. |
Wenn Sie dann eine Instanz dieser `Settings`-Klasse erstellen (in diesem Fall als `settings`-Objekt), liest Pydantic die Umgebungsvariablen ohne Berรผcksichtigung der Groร- und Kleinschreibung. Eine Variable `APP_NAME` in Groรbuchstaben wird also als Attribut `app_name` gelesen. |
||||
|
|
||||
@ -206,8 +232,11 @@ $ ADMIN_EMAIL="[email protected]" APP_NAME="ChimichangApp" uvicorn main:app |
|||||
|
|
||||
</div> |
</div> |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Um mehrere Umgebungsvariablen fรผr einen einzelnen Befehl festzulegen, trennen Sie diese einfach durch ein Leerzeichen und fรผgen Sie alle vor dem Befehl ein. |
|
||||
|
Um mehrere Umgebungsvariablen fรผr einen einzelnen Befehl festzulegen, trennen Sie diese einfach durch ein Leerzeichen und fรผgen Sie alle vor dem Befehl ein. |
||||
|
|
||||
|
/// |
||||
|
|
||||
Und dann wรผrde die Einstellung `admin_email` auf `"[email protected]"` gesetzt. |
Und dann wรผrde die Einstellung `admin_email` auf `"[email protected]"` gesetzt. |
||||
|
|
||||
@ -231,8 +260,11 @@ Und dann verwenden Sie diese in einer Datei `main.py`: |
|||||
{!../../../docs_src/settings/app01/main.py!} |
{!../../../docs_src/settings/app01/main.py!} |
||||
``` |
``` |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Sie benรถtigen auรerdem eine Datei `__init__.py`, wie in [Grรถรere Anwendungen โ mehrere Dateien](../tutorial/bigger-applications.md){.internal-link target=_blank} gesehen. |
|
||||
|
Sie benรถtigen auรerdem eine Datei `__init__.py`, wie in [Grรถรere Anwendungen โ mehrere Dateien](../tutorial/bigger-applications.md){.internal-link target=_blank} gesehen. |
||||
|
|
||||
|
/// |
||||
|
|
||||
## Einstellungen in einer Abhรคngigkeit |
## Einstellungen in einer Abhรคngigkeit |
||||
|
|
||||
@ -254,54 +286,75 @@ Beachten Sie, dass wir jetzt keine Standardinstanz `settings = Settings()` erste |
|||||
|
|
||||
Jetzt erstellen wir eine Abhรคngigkeit, die ein neues `config.Settings()` zurรผckgibt. |
Jetzt erstellen wir eine Abhรคngigkeit, die ein neues `config.Settings()` zurรผckgibt. |
||||
|
|
||||
=== "Python 3.9+" |
//// tab | Python 3.9+ |
||||
|
|
||||
```Python hl_lines="6 12-13" |
```Python hl_lines="6 12-13" |
||||
{!> ../../../docs_src/settings/app02_an_py39/main.py!} |
{!> ../../../docs_src/settings/app02_an_py39/main.py!} |
||||
``` |
``` |
||||
|
|
||||
=== "Python 3.8+" |
//// |
||||
|
|
||||
```Python hl_lines="6 12-13" |
//// tab | Python 3.8+ |
||||
{!> ../../../docs_src/settings/app02_an/main.py!} |
|
||||
``` |
|
||||
|
|
||||
=== "Python 3.8+ nicht annotiert" |
```Python hl_lines="6 12-13" |
||||
|
{!> ../../../docs_src/settings/app02_an/main.py!} |
||||
|
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
!!! tip "Tipp" |
//// tab | Python 3.8+ nicht annotiert |
||||
Bevorzugen Sie die `Annotated`-Version, falls mรถglich. |
|
||||
|
|
||||
```Python hl_lines="5 11-12" |
/// tip | "Tipp" |
||||
{!> ../../../docs_src/settings/app02/main.py!} |
|
||||
``` |
|
||||
|
|
||||
!!! tip "Tipp" |
Bevorzugen Sie die `Annotated`-Version, falls mรถglich. |
||||
Wir werden das `@lru_cache` in Kรผrze besprechen. |
|
||||
|
|
||||
Im Moment nehmen Sie an, dass `get_settings()` eine normale Funktion ist. |
/// |
||||
|
|
||||
|
```Python hl_lines="5 11-12" |
||||
|
{!> ../../../docs_src/settings/app02/main.py!} |
||||
|
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
|
/// tip | "Tipp" |
||||
|
|
||||
|
Wir werden das `@lru_cache` in Kรผrze besprechen. |
||||
|
|
||||
|
Im Moment nehmen Sie an, dass `get_settings()` eine normale Funktion ist. |
||||
|
|
||||
|
/// |
||||
|
|
||||
Und dann kรถnnen wir das von der *Pfadoperation-Funktion* als Abhรคngigkeit einfordern und es รผberall dort verwenden, wo wir es brauchen. |
Und dann kรถnnen wir das von der *Pfadoperation-Funktion* als Abhรคngigkeit einfordern und es รผberall dort verwenden, wo wir es brauchen. |
||||
|
|
||||
=== "Python 3.9+" |
//// tab | Python 3.9+ |
||||
|
|
||||
|
```Python hl_lines="17 19-21" |
||||
|
{!> ../../../docs_src/settings/app02_an_py39/main.py!} |
||||
|
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
|
//// tab | Python 3.8+ |
||||
|
|
||||
```Python hl_lines="17 19-21" |
```Python hl_lines="17 19-21" |
||||
{!> ../../../docs_src/settings/app02_an_py39/main.py!} |
{!> ../../../docs_src/settings/app02_an/main.py!} |
||||
``` |
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
=== "Python 3.8+" |
//// tab | Python 3.8+ nicht annotiert |
||||
|
|
||||
```Python hl_lines="17 19-21" |
/// tip | "Tipp" |
||||
{!> ../../../docs_src/settings/app02_an/main.py!} |
|
||||
``` |
|
||||
|
|
||||
=== "Python 3.8+ nicht annotiert" |
Bevorzugen Sie die `Annotated`-Version, falls mรถglich. |
||||
|
|
||||
!!! tip "Tipp" |
/// |
||||
Bevorzugen Sie die `Annotated`-Version, falls mรถglich. |
|
||||
|
|
||||
```Python hl_lines="16 18-20" |
```Python hl_lines="16 18-20" |
||||
{!> ../../../docs_src/settings/app02/main.py!} |
{!> ../../../docs_src/settings/app02/main.py!} |
||||
``` |
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
### Einstellungen und Tests |
### Einstellungen und Tests |
||||
|
|
||||
@ -321,15 +374,21 @@ Wenn Sie viele Einstellungen haben, die sich mรถglicherweise oft รคndern, vielle |
|||||
|
|
||||
Diese Praxis ist so weit verbreitet, dass sie einen Namen hat. Diese Umgebungsvariablen werden รผblicherweise in einer Datei `.env` abgelegt und die Datei wird โdotenvโ genannt. |
Diese Praxis ist so weit verbreitet, dass sie einen Namen hat. Diese Umgebungsvariablen werden รผblicherweise in einer Datei `.env` abgelegt und die Datei wird โdotenvโ genannt. |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Eine Datei, die mit einem Punkt (`.`) beginnt, ist eine versteckte Datei in Unix-รคhnlichen Systemen wie Linux und macOS. |
|
||||
|
Eine Datei, die mit einem Punkt (`.`) beginnt, ist eine versteckte Datei in Unix-รคhnlichen Systemen wie Linux und macOS. |
||||
|
|
||||
Aber eine dotenv-Datei muss nicht unbedingt genau diesen Dateinamen haben. |
Aber eine dotenv-Datei muss nicht unbedingt genau diesen Dateinamen haben. |
||||
|
|
||||
|
/// |
||||
|
|
||||
Pydantic unterstรผtzt das Lesen dieser Dateitypen mithilfe einer externen Bibliothek. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/latest/concepts/pydantic_settings/#dotenv-env-support" class="external-link" target="_blank">Pydantic Settings: Dotenv (.env) support</a>. |
Pydantic unterstรผtzt das Lesen dieser Dateitypen mithilfe einer externen Bibliothek. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/latest/concepts/pydantic_settings/#dotenv-env-support" class="external-link" target="_blank">Pydantic Settings: Dotenv (.env) support</a>. |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Damit das funktioniert, mรผssen Sie `pip install python-dotenv` ausfรผhren. |
|
||||
|
Damit das funktioniert, mรผssen Sie `pip install python-dotenv` ausfรผhren. |
||||
|
|
||||
|
/// |
||||
|
|
||||
### Die `.env`-Datei |
### Die `.env`-Datei |
||||
|
|
||||
@ -344,26 +403,39 @@ APP_NAME="ChimichangApp" |
|||||
|
|
||||
Und dann aktualisieren Sie Ihre `config.py` mit: |
Und dann aktualisieren Sie Ihre `config.py` mit: |
||||
|
|
||||
=== "Pydantic v2" |
//// tab | Pydantic v2 |
||||
|
|
||||
```Python hl_lines="9" |
```Python hl_lines="9" |
||||
{!> ../../../docs_src/settings/app03_an/config.py!} |
{!> ../../../docs_src/settings/app03_an/config.py!} |
||||
``` |
``` |
||||
|
|
||||
!!! tip "Tipp" |
/// tip | "Tipp" |
||||
Das Attribut `model_config` wird nur fรผr die Pydantic-Konfiguration verwendet. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/latest/concepts/config/" class="external-link" target="_blank">Pydantic: Configuration</a>. |
|
||||
|
|
||||
=== "Pydantic v1" |
Das Attribut `model_config` wird nur fรผr die Pydantic-Konfiguration verwendet. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/latest/concepts/config/" class="external-link" target="_blank">Pydantic: Configuration</a>. |
||||
|
|
||||
```Python hl_lines="9-10" |
/// |
||||
{!> ../../../docs_src/settings/app03_an/config_pv1.py!} |
|
||||
``` |
|
||||
|
|
||||
!!! tip "Tipp" |
//// |
||||
Die Klasse `Config` wird nur fรผr die Pydantic-Konfiguration verwendet. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/1.10/usage/model_config/" class="external-link" target="_blank">Pydantic Model Config</a>. |
|
||||
|
|
||||
!!! info |
//// tab | Pydantic v1 |
||||
In Pydantic Version 1 erfolgte die Konfiguration in einer internen Klasse `Config`, in Pydantic Version 2 erfolgt sie in einem Attribut `model_config`. Dieses Attribut akzeptiert ein `dict`. Um automatische Codevervollstรคndigung und Inline-Fehlerberichte zu erhalten, kรถnnen Sie `SettingsConfigDict` importieren und verwenden, um dieses `dict` zu definieren. |
|
||||
|
```Python hl_lines="9-10" |
||||
|
{!> ../../../docs_src/settings/app03_an/config_pv1.py!} |
||||
|
``` |
||||
|
|
||||
|
/// tip | "Tipp" |
||||
|
|
||||
|
Die Klasse `Config` wird nur fรผr die Pydantic-Konfiguration verwendet. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/1.10/usage/model_config/" class="external-link" target="_blank">Pydantic Model Config</a>. |
||||
|
|
||||
|
/// |
||||
|
|
||||
|
//// |
||||
|
|
||||
|
/// info |
||||
|
|
||||
|
In Pydantic Version 1 erfolgte die Konfiguration in einer internen Klasse `Config`, in Pydantic Version 2 erfolgt sie in einem Attribut `model_config`. Dieses Attribut akzeptiert ein `dict`. Um automatische Codevervollstรคndigung und Inline-Fehlerberichte zu erhalten, kรถnnen Sie `SettingsConfigDict` importieren und verwenden, um dieses `dict` zu definieren. |
||||
|
|
||||
|
/// |
||||
|
|
||||
Hier definieren wir die Konfiguration `env_file` innerhalb Ihrer Pydantic-`Settings`-Klasse und setzen den Wert auf den Dateinamen mit der dotenv-Datei, die wir verwenden mรถchten. |
Hier definieren wir die Konfiguration `env_file` innerhalb Ihrer Pydantic-`Settings`-Klasse und setzen den Wert auf den Dateinamen mit der dotenv-Datei, die wir verwenden mรถchten. |
||||
|
|
||||
@ -390,26 +462,35 @@ wรผrden wir dieses Objekt fรผr jeden Request erstellen und die `.env`-Datei fรผr |
|||||
|
|
||||
Da wir jedoch den `@lru_cache`-Dekorator oben verwenden, wird das `Settings`-Objekt nur einmal erstellt, nรคmlich beim ersten Aufruf. โ๏ธ |
Da wir jedoch den `@lru_cache`-Dekorator oben verwenden, wird das `Settings`-Objekt nur einmal erstellt, nรคmlich beim ersten Aufruf. โ๏ธ |
||||
|
|
||||
=== "Python 3.9+" |
//// tab | Python 3.9+ |
||||
|
|
||||
```Python hl_lines="1 11" |
```Python hl_lines="1 11" |
||||
{!> ../../../docs_src/settings/app03_an_py39/main.py!} |
{!> ../../../docs_src/settings/app03_an_py39/main.py!} |
||||
``` |
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
|
//// tab | Python 3.8+ |
||||
|
|
||||
|
```Python hl_lines="1 11" |
||||
|
{!> ../../../docs_src/settings/app03_an/main.py!} |
||||
|
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
=== "Python 3.8+" |
//// tab | Python 3.8+ nicht annotiert |
||||
|
|
||||
```Python hl_lines="1 11" |
/// tip | "Tipp" |
||||
{!> ../../../docs_src/settings/app03_an/main.py!} |
|
||||
``` |
|
||||
|
|
||||
=== "Python 3.8+ nicht annotiert" |
Bevorzugen Sie die `Annotated`-Version, falls mรถglich. |
||||
|
|
||||
!!! tip "Tipp" |
/// |
||||
Bevorzugen Sie die `Annotated`-Version, falls mรถglich. |
|
||||
|
```Python hl_lines="1 10" |
||||
|
{!> ../../../docs_src/settings/app03/main.py!} |
||||
|
``` |
||||
|
|
||||
```Python hl_lines="1 10" |
//// |
||||
{!> ../../../docs_src/settings/app03/main.py!} |
|
||||
``` |
|
||||
|
|
||||
Dann wird bei allen nachfolgenden Aufrufen von `get_settings()`, in den Abhรคngigkeiten fรผr darauffolgende Requests, dasselbe Objekt zurรผckgegeben, das beim ersten Aufruf zurรผckgegeben wurde, anstatt den Code von `get_settings()` erneut auszufรผhren und ein neues `Settings`-Objekt zu erstellen. |
Dann wird bei allen nachfolgenden Aufrufen von `get_settings()`, in den Abhรคngigkeiten fรผr darauffolgende Requests, dasselbe Objekt zurรผckgegeben, das beim ersten Aufruf zurรผckgegeben wurde, anstatt den Code von `get_settings()` erneut auszufรผhren und ein neues `Settings`-Objekt zu erstellen. |
||||
|
|
||||
|
File diff suppressed because it is too large
@ -16,17 +16,21 @@ |
|||||
|
|
||||
โก๏ธ โถ๏ธ โฎ๏ธ ๐
FastAPI ๐ธ: |
โก๏ธ โถ๏ธ โฎ๏ธ ๐
FastAPI ๐ธ: |
||||
|
|
||||
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐" |
//// tab | ๐ 3๏ธโฃ.6๏ธโฃ & ๐ |
||||
|
|
||||
```Python hl_lines="9-11 14-15 18 19 23" |
```Python hl_lines="9-11 14-15 18 19 23" |
||||
{!> ../../../docs_src/generate_clients/tutorial001.py!} |
{!> ../../../docs_src/generate_clients/tutorial001.py!} |
||||
``` |
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
=== "๐ 3๏ธโฃ.9๏ธโฃ & ๐" |
//// tab | ๐ 3๏ธโฃ.9๏ธโฃ & ๐ |
||||
|
|
||||
|
```Python hl_lines="7-9 12-13 16-17 21" |
||||
|
{!> ../../../docs_src/generate_clients/tutorial001_py39.py!} |
||||
|
``` |
||||
|
|
||||
```Python hl_lines="7-9 12-13 16-17 21" |
//// |
||||
{!> ../../../docs_src/generate_clients/tutorial001_py39.py!} |
|
||||
``` |
|
||||
|
|
||||
๐ ๐ *โก ๐ ๏ธ* ๐ฌ ๐ท ๐ซ โ๏ธ ๐จ ๐ & ๐จ ๐, โ๏ธ ๐ท `Item` & `ResponseMessage`. |
๐ ๐ *โก ๐ ๏ธ* ๐ฌ ๐ท ๐ซ โ๏ธ ๐จ ๐ & ๐จ ๐, โ๏ธ ๐ท `Item` & `ResponseMessage`. |
||||
|
|
||||
@ -111,8 +115,11 @@ [email protected] generate-client /home/user/code/frontend-app |
|||||
|
|
||||
<img src="/img/tutorial/generate-clients/image03.png"> |
<img src="/img/tutorial/generate-clients/image03.png"> |
||||
|
|
||||
!!! tip |
/// tip |
||||
๐ โ `name` & `price`, ๐ ๐ฌ FastAPI ๐ธ, `Item` ๐ท. |
|
||||
|
๐ โ `name` & `price`, ๐ ๐ฌ FastAPI ๐ธ, `Item` ๐ท. |
||||
|
|
||||
|
/// |
||||
|
|
||||
๐ ๐ โ๏ธ โธ โ ๐ ๐ ๐ ๐จ: |
๐ ๐ โ๏ธ โธ โ ๐ ๐ ๐ ๐จ: |
||||
|
|
||||
@ -129,17 +136,21 @@ [email protected] generate-client /home/user/code/frontend-app |
|||||
๐ผ, ๐ ๐ช โ๏ธ ๐ **๐ฌ** & โ1๏ธโฃ ๐ **๐ฉโ๐ป**, & ๐ซ ๐ช ๐ฝ ๐: |
๐ผ, ๐ ๐ช โ๏ธ ๐ **๐ฌ** & โ1๏ธโฃ ๐ **๐ฉโ๐ป**, & ๐ซ ๐ช ๐ฝ ๐: |
||||
|
|
||||
|
|
||||
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐" |
//// tab | ๐ 3๏ธโฃ.6๏ธโฃ & ๐ |
||||
|
|
||||
|
```Python hl_lines="23 28 36" |
||||
|
{!> ../../../docs_src/generate_clients/tutorial002.py!} |
||||
|
``` |
||||
|
|
||||
|
//// |
||||
|
|
||||
```Python hl_lines="23 28 36" |
//// tab | ๐ 3๏ธโฃ.9๏ธโฃ & ๐ |
||||
{!> ../../../docs_src/generate_clients/tutorial002.py!} |
|
||||
``` |
|
||||
|
|
||||
=== "๐ 3๏ธโฃ.9๏ธโฃ & ๐" |
```Python hl_lines="21 26 34" |
||||
|
{!> ../../../docs_src/generate_clients/tutorial002_py39.py!} |
||||
|
``` |
||||
|
|
||||
```Python hl_lines="21 26 34" |
//// |
||||
{!> ../../../docs_src/generate_clients/tutorial002_py39.py!} |
|
||||
``` |
|
||||
|
|
||||
### ๐ ๐ ๐ฉโ๐ป โฎ๏ธ ๐ |
### ๐ ๐ ๐ฉโ๐ป โฎ๏ธ ๐ |
||||
|
|
||||
@ -186,17 +197,21 @@ FastAPI โ๏ธ **๐ ๐** ๐ *โก ๐ ๏ธ*, โซ๏ธ โ๏ธ **๐ ๏ธ ๐** |
|||||
|
|
||||
๐ ๐ช โคด๏ธ ๐ถโโ๏ธ ๐ ๐ ๐ข **FastAPI** `generate_unique_id_function` ๐ข: |
๐ ๐ช โคด๏ธ ๐ถโโ๏ธ ๐ ๐ ๐ข **FastAPI** `generate_unique_id_function` ๐ข: |
||||
|
|
||||
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐" |
//// tab | ๐ 3๏ธโฃ.6๏ธโฃ & ๐ |
||||
|
|
||||
```Python hl_lines="8-9 12" |
```Python hl_lines="8-9 12" |
||||
{!> ../../../docs_src/generate_clients/tutorial003.py!} |
{!> ../../../docs_src/generate_clients/tutorial003.py!} |
||||
``` |
``` |
||||
|
|
||||
=== "๐ 3๏ธโฃ.9๏ธโฃ & ๐" |
//// |
||||
|
|
||||
|
//// tab | ๐ 3๏ธโฃ.9๏ธโฃ & ๐ |
||||
|
|
||||
|
```Python hl_lines="6-7 10" |
||||
|
{!> ../../../docs_src/generate_clients/tutorial003_py39.py!} |
||||
|
``` |
||||
|
|
||||
```Python hl_lines="6-7 10" |
//// |
||||
{!> ../../../docs_src/generate_clients/tutorial003_py39.py!} |
|
||||
``` |
|
||||
|
|
||||
### ๐ ๐ ๐ฉโ๐ป โฎ๏ธ ๐ ๐ ๏ธ ๐ |
### ๐ ๐ ๐ฉโ๐ป โฎ๏ธ ๐ ๐ ๏ธ ๐ |
||||
|
|
||||
|
Some files were not shown because too many files changed in this diff
Loadingโฆ
Reference in new issue