Sto scrivendo una piccola app in bottiglia. Ho qualche problema concettuale aiutami a risolverlo
Domanda
from bottle import route, run, debug, error, request, template
@route('/home')
@route('/home/')
def login():
return template('templates/login')
@route('/home', method='POST')
@route('/home/', method='POST')
def welocme():
data = request.POST
if data:
password = data.get('password')
check_pass = 'password'
if password == check_pass:
return template('templates/welcome')
else:
return template('templates/login')
else:
return template('templates/login')
Il mio requisito è: riceverò una pagina di accesso e benvenuto sullo stesso URL. La pagina di accesso ha solo un campo password.
Il mio problema: se ricevo l'accesso e torno alla pagina di benvenuto su rinfrescante, mi invia alla pagina di accesso. Ma idealmente dovrebbe essere solo nella pagina di benvenuto.
@error(404)
def error404(error):
return 'http://google.com'
Il mio secondo problema: voglio reindirizzare su un determinato URL su 404.
Soluzione
Se l'utente va alla pagina "/home", non vuoi verificare se vengono effettuati l'accesso prima di mostrare loro la schermata di accesso? Sembra che tu prestassi che non abbiano già effettuato l'accesso se il metodo HTTP non è post.
Non so molto del tuo framework, ma presumo che se l'accesso abbia successo dovresti impostare un cookie, e quindi dovresti controllare il cookie per HTTP può vedere se l'utente è autenticato.
Altri suggerimenti
La tua seconda domanda ha una risposta qui.
Potresti anche dare un'occhiata Sessioni di biscotti di Beaker e usalo per mantenere lo stato dell'applicazione tra le richieste.
Se capisco correttamente la domanda, l'unico modo per ottenere il modello di benvenuto è tramite Post.
Potresti modificarlo in modo che ricevi le richieste di verificare se qualcuno è effettuato l'accesso. Se ciò non riesce, reindirizzarle alla pagina di accesso.