Mam bardzo prosty program python za pomocą Flask pokazanej poniżej. Obsługuje logowanie z wyskakującym okienkiem i wylogowaniem. Problem polega na tym, że adres URL w przeglądarce nie jest aktualizowany przez wywołanie przekierowania (url_for()).Url w przeglądarce nie jest aktualizowany po wywołaniu przekierowania (url_for ('xxx')) w Flasku z jQuery mobile
@app.route('/')
def index():
if not 'username' in session:
# contains a button showing a login popup form with action set to '/login'
return render_template('welcome.html')
else:
# contains a logout button with a href to '/logout'
return render_template('webapp.html')
@app.route('/login', methods=['POST'])
def login():
session['username'] = request.form['username']
return redirect(url_for('index'))
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
Podczas uzyskiwania dostępu do "/" wyświetlana jest strona powitalna. Po kliknięciu przycisku pojawia się okno logowania, a jego akcja formularza przekierowuje do "/ login". Działa to i wywoływana jest funkcja login(). Przekierowanie również, ale przeglądarka nie aktualizuje wyświetlanego adresu URL.
Strona internetowa jest wyświetlana z adresem URL/logon. Kiedy klikam przeładowanie, pojawia się błąd, ponieważ próbuje przeładować/zalogować, podczas gdy powinien przeładować "/" tam, gdzie został przekierowany.
To samo dzieje się z/wylogowaniem. Po wyświetleniu strony webapp i kliknięciu przycisku wylogowania, ładowana jest strona/logout, która wykonuje funkcję logout() i przekierowuje do indeksu. Ale URL pozostawia się do wylogowania.
Jeśli ponownie załaduję stronę, to się to uda, ponieważ/logout akceptuje metodę GET, a następnie adres URL jest aktualizowany do/jak powinien być na pierwszym miejscu.
Mam wrażenie, że jest to problem z urządzeniem mobilnym jQuery, ale nie można go znaleźć. Z punktu widzenia Pythona i Flask pasuje do wszystkich przykładów logowania, które mogłem znaleźć.
To jest ten - właśnie kopałem dookoła jakiegoś starego kodu, który próbowałem znaleźć dla ciebie ... :) No cóż! –