Lösungsvorschlag: 2FA mit TOTP
Das Projekt findet sich hier auf Github: https://github.com/ateachment/SimpleAuthService/tree/2fa-totp
Eine Zwei-Faktor-Authentifizierung erhöht erheblich die Sicherheit einer Anwendung. Die Grundprinzipien und die genauer Umsetzung im Code der Beispielanwendung wird in Exkurs: 2FA und TOTP erläutert.
Bei dieser Projektversion ist die Zwei-Faktor-Anmeldung mit einem zeitbasierten Einmalkennwort möglich.
Beim ersten Start und nach Eingabe von Benutzername und Kennwort kann folgender Code kann mit dem Google- oder Microsoft-Authenticatior oder auch der Authy-App gescannt werden:

QR-Code für 2FA mit TOTP (Two-factor Authentication mit Time-based One-time Password)
Danach ist es möglich, das sich alle 30 Sekunden ändernde zeitbasierte Einmalkennwort abzulesen und in das obige Formular einzutragen.

Google Authenticator App
Gelingt die Anmeldung - und nur dann - ist das Verfahren aktiviert und bei der nächsten Anmeldung muss kein Scannen mehr erfolgen, sondern das jedesmal neue Einmalkennwort kann direkt eingegeben werden.
Die Webanwendung ist noch unvollständig, denn z.B. kann der TOTP-Schlüssel noch nicht erneuert werden und das Verfahren zurückgesetzt werden. Dies muss derzeit noch in der Datenbank erfolgen. Hierfür muss das Attribut totpActivated in tblUser muss auf 0 zurückgesetzt werden:

Attribut totpActivated in tblUser muss auf 0 zurückgesetzt werden, um 2FA TOTP zurückzusetzen.
Im obigen Screenshot von PhpMyAdmin sieht man einen statischen TOTP-Schlüssel, dieser wird nur für die automatischen Tests benötigt. Für den Produktivbetrieb muss in settings.py der DEBUG_MODE auf False gesetzt werden. Nur so erhält jeder Benutzer einen eigenen, zufällig generierten TOTP-Schlüssel:
DEBUG_MODE = FALSE # disable DEBUG_MODE in productive environment
Quellen:
Two-Factor Authentication using Google Authenticator in Python - GeeksforGeeks (03.02.2023)
https://github.com/google/google-authenticator/wiki/Key-Uri-Format