Use diferentes tipos de parámetros dentro de la URL en Flask

Salman Mehmood 18 agosto 2022
Use diferentes tipos de parámetros dentro de la URL en Flask

Aprenderemos, con esta explicación, sobre los convertidores de URL en la aplicación Flask, lo que significa la capacidad de pasar parámetros en cualquier URL. También aprenderemos a usar diferentes tipos de parámetros dentro de la URL en la aplicación Flask.

Use diferentes tipos de parámetros dentro de la URL en Flask

Ahora discutiremos los parámetros de URL y los demostraremos; Comenzaremos con el valor predeterminado, que es el ejemplo más básico. Para ello, crearemos una ruta y le pasaremos la route() que sería '/default/<params>'.

El /default conducirá a la URL. La segunda parte de la URL es el parámetro, donde especificamos el parámetro dentro del símbolo mayor y menor que.

Luego crearemos una función llamada DEFAULT() y le pasaremos el mismo nombre al parámetro de función que definimos en nuestra ruta, así que en este caso, el parámetro sería params. Luego devolveremos el valor y concatenaremos el valor con esta cadena.

from flask import Flask

app = Flask(__name__)


@app.route("/default/<params>")
def DEFAULT(params):
    return "The parameter is: " + params


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

Iniciemos nuestra aplicación y abramos el navegador, y después de escribir /default cuando pasemos un nombre, veremos el valor de un parámetro que es una cadena por defecto.

Le mostraremos los otros tipos de datos que puede usar, pero para el análisis de la cadena, le mostraremos que si pasamos un número y un número decimal, todo funcionará porque se convierte en una cadena. De esta forma, obtendremos el valor de lo que hayamos pasado en el punto final.

Flask URL Parámetros Salida 1

Si no le pasamos el parámetro, nos da error de no encontrado porque espera un parámetro. Para manejar este caso, cuando el usuario no pase nada, especificaremos otra ruta y simplemente la pondremos arriba.

Dentro de esta ruta, pasaremos un argumento de palabra clave llamado defaults y tomaremos params y su valor.

@app.route('/default', defaults={'params': 'John'})

Ahora lo reiniciaremos, y si vamos con la URL sin pasar un parámetro, obtendremos el valor predeterminado que es John, pero si pasamos el valor, obtendremos este valor en lugar del valor predeterminado.

Flask URL Parámetros Salida 2

Pasemos un tipo de datos como una cadena en nuestras rutas para especificar que solo puede ser una cadena. Primero ponemos cadena, luego dos puntos y luego el nombre del parámetro.

Definiremos otra función para esta ruta llamada String_Func() y devolveremos la cadena y concatenaremos el parámetro que definimos en la ruta.

@app.route("/str-url/<string:str_params>")
def String_Func(str_params):
    return "The string parameter is: " + str_params

Podemos ver que esto funciona igual que la ruta predeterminada porque, de forma predeterminada, el tipo de parámetro es una cadena.

Flask URL Parámetros Salida 3

Ahora veamos qué sucede cuando queremos tratar con diferentes tipos de datos, y el siguiente tipo de datos sería un número entero. Definamos otra ruta pase <int:int_params>; el parámetro sería como lo llames.

Luego definimos una función como de costumbre y la convertimos en un tipo de datos de cadena porque no podemos concatenar una cadena a un número entero.

@app.route("/int-url/<int:int_params>")
def Int_Func(int_params):
    return "The integer parameter is: " + str(int_params)

Producción

Flask URL Parámetros Salida 4

El siguiente tipo de datos que usamos sería un flotante, comenzando con <float:float_params>.

@app.route("/float-url/<float:float_params>")
def Float_Func(float_params):
    return "The float parameter is: " + str(float_params)

Si pasamos 3.5, la página lo mostrará, pero si pasamos solo 3, obtenemos un error porque 3 es un número entero y el Flask no lo permite de esa manera. Si desea 3.0, debe pasar 3.0 o crear otra ruta que recoja cualquier número entero.

Flask URL Parámetros Salida 5

Una cosa más es una URL de ruta para que definamos una nueva ruta para ella, y se nos pedirá que pasemos el tipo de datos de la ruta y el nombre de la ruta como <ruta:nuestra_ruta>.

@app.route("/path-route/<path:our_path>")
def Path_Func(our_path):
    return "Our path is: " + our_path

Ahora iremos a la URL y le daremos la ruta, luego muestra esto, pero si ponemos algunas barras y especificamos otro subdirectorio, lo selecciona todo e incluye las barras.

Flask URL Parámetros Salida 6

Lo último que queremos mostrarte es que puedes combinar más de un parámetro en una misma ruta. Combinaremos parámetros de cadena y enteros como <string:name>/<int:num>.

Definamos una función y especifiquemos ambos parámetros dentro de la función y devuélvalos.

@app.route("/combine-route/<string:name>/<int:num>")
def Combine_Func(name, num):
    return "User name is: " + name + " and user id is: " + str(num)

Mire la salida para que pueda entenderla mejor.

Flask URL Parámetros Salida 7

Código fuente completo de la aplicación Flask:

from flask import Flask

app = Flask(__name__)
# This is the default route


@app.route("/default", defaults={"params": "John"})
@app.route("/default/<params>")
def DEFAULT(params):
    return "The string parameter is: " + params


# This route holds string data type
@app.route("/str-url/<string:str_params>")
def String_Func(str_params):
    return "The string parameter is: " + str_params


# This route holds int data type
@app.route("/int-url/<int:int_params>")
def Int_Func(int_params):
    return "The integer parameter is: " + str(int_params)


# This route holds float data type
@app.route("/float-url/<float:float_params>")
def Float_Func(float_params):
    return "The float parameter is: " + str(float_params)


# This route holds path data type
@app.route("/path-route/<path:our_path>")
def Path_Func(our_path):
    return "Our path is: " + our_path


# This route combine two parameters
@app.route("/combine-route/<string:name>/<int:num>")
def Combine_Func(name, num):
    return "User name is: " + name + " and user id is: " + str(num)


if __name__ == "__main__":
    app.run(debug=True)
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn