<jupyter_start><jupyter_text>[![img/pythonista.png](img/pythonista.png)](https://www.pythonista.io)  *URLs* y redireccionamiento.  La función ```flask.url_for()```. La función ```flask.url_for()``` permite utilizar una función de vista como referencia en vez de su *URL* correspondiente con la siguiente sintaxis.```url_for(, values=)```Dicha función cuenta además con algunos otros parámetros adicionales para definir métodos y referencias para la *URL*.https://flask.palletsprojects.com/en/2.0.x/api/flask.url_for  Archivos estáticos.*Flask* está configurado para utiliza el subdirectorio ```static``` localizado en el directorio de la aplicación de *Flask*  para acceder a archivos estáticos. La función ```url_for()``` permite generar *URL* a archivos estáticos con la siguiente sintaxis:```url_for('static', filename='')```  La función ```flask.redirect()```.Dicha función le indica al cliente que se redirija a una *URL* específica.```return flask.redirect('')```  Aplicación ilustrativa. Se correrá una aplicación con dos funciones de vista.* La función de vista ```index()``` apuntaa la raíz de la aplicación ```/```.* La función de vista ```usuario()``` es dinámica para ```/busca/``` despliega código *HTML* que utiliza a la función ```url_for()``` para la función ```index()``` y para un archivo estático. **Advertencia:** Una vez ejecutada la siguiente celda, es necesario interrumpir el *kernel* de *Jupyter* para poder ejecutar el resto de las celdas de la *notebook*.<jupyter_code>from flask import Flask, url_for, redirect
app = Flask(__name__)
@app.route('/')
def index():
    '''Función de vista para la URL raíz'''
    return '<h1>Este es el inicio.</h1>' 
@app.route('/busca/<nombre>')
def usuario(nombre):
    '''Función de vista que muestra acceso a recursos
    estáticos y redirecccionamiento'''
    if nombre == 'inicio':
        return redirect(url_for("index"))
    else:
        return f'<img src={url_for("static", filename="pythonista.png")}> \
        <h1>Hola, {nombre}.</h1> \
        <p> Regresar al <a href={url_for("index")}>inicio.</p>'
app.run('0.0.0.0')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14938737040527805, 'fraction_numerical': 0.00471253534401508, 'mean_word_length': 5.048433048433049, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 2, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '72234', 'license': 'MIT', 'n_tokens_mistral': 733, 'n_tokens_neox': 728, 'n_words': 226, 'path': '09_urls_y_redireccionamiento.ipynb', 'repo_name': 'PythonistaMX/py231', 'size': '2122'}