Ich habe ein sehr einfaches Python-Programm, das den unten gezeigten Flask verwendet. Es handhabt eine Anmeldung mit einem Popup und Logout. Das Problem ist, dass die URL im Browser nicht durch den Umleitungsruf (url_for ()) aktualisiert wird.
%Vor%Beim Zugriff auf '/' wird die Begrüßungsseite angezeigt. Wenn ich auf die Schaltfläche klicke, wird das Login-Popup angezeigt und die Formularaktion wird auf "/ login" umgeleitet. Das funktioniert und die login () Funktion wird aufgerufen und ausgeführt. Die Umleitung auch, aber der Browser aktualisiert die angezeigte URL nicht.
So wird die Webapp-Seite mit der / logon URL angezeigt. Wenn ich auf Neuladen klicke, erhalte ich einen Fehler, weil es versucht, neu zu laden / sich anzumelden, während es '/' neu laden sollte, wo es umgeleitet wurde.
Das Gleiche passiert mit / logout. Wenn die Webapp-Seite angezeigt wird und ich auf den Logout-Button klicke, wird die / logout-Seite geladen, die die logout () -Funktion ausführt und zum Index weiterleitet. Aber die URL muss sich abmelden.
Wenn ich die Seite neu lade, ist es erfolgreich, weil / logout die GET-Methode akzeptiert und dann die URL auf / so aktualisiert wird, wie sie eigentlich hätte sein sollen.
Ich habe den Eindruck, dass es sich um ein jQuery-Problem handelt, kann aber das Problem nicht herausfinden. Aus Sicht von Python und Flask stimmt es mit allen Login-Beispielen überein, die ich finden kann.
Schließlich löste es nach dem Schreiben der Frage.
Das Problem wird von jQuery mobile und dem fehlenden Daten-URL-Attribut verursacht.
Durch Hinzufügen des Daten-URL-Attributs in der Seite div wird die URL im Browser aktualisiert und alles funktioniert einwandfrei.
%Vor%Tags und Links python jquery-mobile flask flask-login