En aquest tema, aprendrem com Flask gestiona les rutes i el mapeig d'URL. L'enrutament és un concepte fonamental en el desenvolupament web, ja que permet definir com les URL de la teva aplicació corresponen a les funcions que s'executen quan aquestes URL són sol·licitades.

Conceptes Clau

  1. Ruta (Route): Una ruta és una URL específica que l'aplicació pot reconèixer i respondre.
  2. Funció de Vista (View Function): És la funció que s'executa quan es sol·licita una ruta específica.
  3. Decorador @app.route: Utilitzat per associar una URL amb una funció de vista.

Creant una Ruta Bàsica

Exemple de Codi

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Benvingut a la pàgina principal!"

if __name__ == '__main__':
    app.run(debug=True)

Explicació

  1. Importació i Inicialització:

    from flask import Flask
    app = Flask(__name__)
    
    • Importem la classe Flask del paquet flask.
    • Creem una instància de l'aplicació Flask.
  2. Definició de la Ruta:

    @app.route('/')
    def home():
        return "Benvingut a la pàgina principal!"
    
    • Utilitzem el decorador @app.route('/') per definir una ruta per a la URL arrel (/).
    • La funció home és la funció de vista que es crida quan es visita la URL arrel.
    • La funció retorna un missatge de benvinguda.
  3. Execució de l'Aplicació:

    if __name__ == '__main__':
        app.run(debug=True)
    
    • Executem l'aplicació en mode de depuració (debug=True), la qual cosa facilita la detecció d'errors durant el desenvolupament.

Paràmetres en les Rutes

Flask permet definir rutes amb paràmetres, que poden ser passats a les funcions de vista.

Exemple de Codi amb Paràmetres

@app.route('/usuari/<nom>')
def salutacio(nom):
    return f"Hola, {nom}!"

Explicació

  1. Ruta amb Paràmetre:
    @app.route('/usuari/<nom>')
    def salutacio(nom):
        return f"Hola, {nom}!"
    
    • La ruta /usuari/<nom> conté un paràmetre nom.
    • La funció salutacio rep el paràmetre nom i retorna un missatge personalitzat.

Tipus de Paràmetres

Flask permet especificar el tipus de paràmetre en les rutes.

Exemple de Codi amb Tipus de Paràmetres

@app.route('/article/<int:id>')
def mostrar_article(id):
    return f"Estàs veient l'article amb ID: {id}"

Explicació

  1. Ruta amb Tipus de Paràmetre:
    @app.route('/article/<int:id>')
    def mostrar_article(id):
        return f"Estàs veient l'article amb ID: {id}"
    
    • La ruta /article/<int:id> especifica que el paràmetre id ha de ser un enter (int).
    • La funció mostrar_article rep el paràmetre id i retorna un missatge amb l'ID de l'article.

Exercicis Pràctics

Exercici 1

Crea una ruta /producte/<nom> que mostri un missatge amb el nom del producte.

Solució

@app.route('/producte/<nom>')
def mostrar_producte(nom):
    return f"Producte: {nom}"

Exercici 2

Crea una ruta /usuari/<int:id> que mostri un missatge amb l'ID de l'usuari.

Solució

@app.route('/usuari/<int:id>')
def mostrar_usuari(id):
    return f"ID de l'usuari: {id}"

Errors Comuns i Consells

  1. Error 404: Si una ruta no està definida, Flask retornarà un error 404 (No Trobat). Assegura't que les rutes estan correctament definides.
  2. Tipus de Paràmetres: Si especifiques un tipus de paràmetre (com int) i la URL no compleix amb aquest tipus, Flask retornarà un error 404.

Resum

En aquesta secció, hem après com definir rutes en Flask utilitzant el decorador @app.route. Hem vist com passar paràmetres a les rutes i com especificar el tipus de paràmetre. També hem practicat amb alguns exercicis per reforçar els conceptes apresos. En la següent secció, explorarem com gestionar els mètodes HTTP en Flask.

Curs de Desenvolupament Web amb Flask

Mòdul 1: Introducció a Flask

Mòdul 2: Conceptes Bàsics de Flask

Mòdul 3: Formularis i Entrada d'Usuari

Mòdul 4: Integració de Bases de Dades

Mòdul 5: Autenticació d'Usuaris

Mòdul 6: Conceptes Avançats de Flask

Mòdul 7: APIs RESTful amb Flask

Mòdul 8: Desplegament i Producció

Mòdul 9: Proves i Millors Pràctiques

Mòdul 10: Extensions i Ecosistema de Flask

© Copyright 2024. Tots els drets reservats