TransWikia.com

¿Como accedo a un @app.route desde otro app.route? Flask

Stack Overflow en español Asked by Luciano on August 21, 2020

Estoy con una duda. Quiero que, en caso que se cumpla user[0].Tipo == ‘Mozo’, se redirija a la ruta ‘mozo’, ya que en esa URL tengo varias utilidades que necesito poder accesarlas facilmente, en vez de tener que iniciar sesion para poder usar las funcionalidades..

Con el codigo como está, se ejecuta la URL login_incorrecto, cuando en realidad los datos que estoy introduciendo son los del mozo y deberia entrar. Que tendria que cambiar para que funcione?

def bienvenida():
    if request.method == 'POST':
        try:
            if request.form['DNI'] and request.form['Clave']:
                user= Usuarios.query.filter_by(DNI= request.form['DNI'])
                contrasena= hashlib.md5(bytes(request.form['Clave'], encoding='utf-8'))  
                if contrasena.hexdigest() == user[0].Clave and user:
                    if user[0].Tipo == 'Mozo':
                        self.mozo()
                    else:
                        return render_template('cocinero.html')
            else:
                return render_template('login_incorrecto.html')
        except:
            return render_template('login_incorrecto.html')
        
        
@app.route('/mozo', methods= ['POST', 'GET'])
def mozo(self):
    return render_template('mozo.html')

One Answer

Usas la funcion redirect

# La importas desde flask
# from flask import redirect

def bienvenida():
    if request.method == 'POST':
        try:
            if request.form['DNI'] and request.form['Clave']:
                user= Usuarios.query.filter_by(DNI= request.form['DNI'])
                contrasena= hashlib.md5(bytes(request.form['Clave'], encoding='utf-8'))  
                if contrasena.hexdigest() == user[0].Clave and user:
                    if user[0].Tipo == 'Mozo':
                        self.mozo()
                        redirect("/mozo")
                    else:
                        return render_template('cocinero.html')
            else:
                return render_template('login_incorrecto.html')
        except:
            return render_template('login_incorrecto.html')
        
        
@app.route('/mozo', methods= ['POST', 'GET'])
def mozo(self):
    return render_template('mozo.html')

Correct answer by Pablochaches on August 21, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP