Python - Enrutamiento

El enrutamiento es el mecanismo de mapeo de la URL directamente al código que crea la página web. Ayuda a una mejor gestión de la estructura de la página web y aumenta considerablemente el rendimiento del sitio y las mejoras o modificaciones adicionales se vuelven realmente sencillas. En Python, el enrutamiento se implementa en la mayoría de los trabajos de marcos web. Veremos los ejemplos deflask marco web en este capítulo.

Enrutamiento en matraz

los route()El decorador en Flask se usa para vincular una URL a una función. Como resultado, cuando se menciona la URL en el navegador, la función se ejecuta para dar el resultado. Aquí, URL'/hello' la regla está ligada a la hello_world()función. Como resultado, si un usuario visitahttp://localhost:5000/ URL, la salida del hello_world() La función se mostrará en el navegador.

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
   return 'Hello Tutorialspoint'
if __name__ == '__main__':
   app.run()

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

* Serving Flask app "flask_route" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [06/Aug/2018 08:48:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [06/Aug/2018 08:48:46] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [06/Aug/2018 08:48:46] "GET /favicon.ico HTTP/1.1" 404 -

Abrimos el navegador y apuntamos a la URL http://localhost:5000/ para ver el resultado de la función que se está ejecutando.

Usar variables de URL

Podemos pasar variables de URL usando la ruta para construir URL sobre la marcha. Para esto usamos la función url_for () que acepta el nombre de la función como primer argumento y el resto de argumentos como parte variable de la regla URL.

En el siguiente ejemplo, pasamos los nombres de las funciones como argumentos a la función url_for e imprimimos el resultado cuando se ejecutan esas líneas.

from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
@app.route('/login')
def login(): pass
@app.route('/user/
      
       ') def profile(username): pass with app.test_request_context(): print url_for('index') print url_for('index', _external=True) print url_for('login') print url_for('login', next='/') print url_for('profile', username='Tutorials Point') 
      

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

/
http://localhost/
/login
/login?next=%2F
/user/Tutorials%20Point

Redireccionamientos

Podemos usar la función de redireccionamiento para redirigir al usuario a otra URL usando el enrutamiento. Mencionamos la nueva URL como un valor de retorno de la función que debería redirigir al usuario. Esto es útil cuando desviamos temporalmente a los usuarios a una página diferente cuando estamos modificando una página web existente.

from flask import Flask, abort, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
    return redirect(url_for('login'))
@app.route('/login')
def login():
    abort(401)
#    this_is_never_executed()

Cuando se ejecuta el código anterior, la URL base va a la página de inicio de sesión que utiliza la función de cancelación para que el código de la página de inicio de sesión nunca se ejecute.