Diferencia entre revisiones de «Flask: guía rápida»

De nuxpy
Ir a la navegación Ir a la búsqueda
 
(No se muestran 7 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
El artículo a continuación guarda ciertas referencias rápidas para el uso de ''Flask''.
 
El artículo a continuación guarda ciertas referencias rápidas para el uso de ''Flask''.
 +
= request =
 +
Para usar esta función o método de ''Flask'' se debe importar de la siguiente manera:
 +
<syntaxhighlight lang="python">
 +
# -*- coding: utf-8 -*-
 +
 +
from flask import request
 +
 +
</syntaxhighlight>
 +
== Evaluando método ==
 +
Con ''request'' se puede evaluar el método obtenido de un formulario después del ''submit'', por ejemplo:
 +
<syntaxhighlight lang="python">
 +
print(request.method)
 +
</syntaxhighlight>
 +
Dependiendo del caso mostrando el método obtenido, entre los más usados:
 +
    GET
 +
    POST
 +
    DELETE
 +
    PUT
 +
 +
Así que se puede usar en una condición tal como:
 +
<syntaxhighlight lang="python">
 +
if request.method == 'POST':
 +
    print(request.method)
 +
</syntaxhighlight>
 
= route =
 
= route =
 
Este método decorador permite crear una ruta de una vista del sistema. El patrón es el siguiente:
 
Este método decorador permite crear una ruta de una vista del sistema. El patrón es el siguiente:
Línea 9: Línea 33:
 
Viene integrado por defecto en la clase que corresponde al nombre de la aplicación según se instancia la clase principal de ''Flask''.
 
Viene integrado por defecto en la clase que corresponde al nombre de la aplicación según se instancia la clase principal de ''Flask''.
  
El método se puede sustituir según el método ''request'' que se desea usar. En el caso anterior solo se ha agregado '''GET''', pero se puede incluir tantos métodos sean necesarios para dicha vista, ejemplo:
+
El método se puede sustituir [https://developer.mozilla.org/es/docs/Web/HTTP/Methods según el método ''request''] que se desea usar. En el caso anterior solo se ha agregado '''GET''', pero se puede incluir tantos métodos sean necesarios para dicha vista, ejemplo:
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
@app.route('/usuario-nuevo', methods=['GET', 'POST'])
 
@app.route('/usuario-nuevo', methods=['GET', 'POST'])
Línea 20: Línea 44:
  
 
= url_for =
 
= url_for =
 +
Esta función construye una ''URL'' según el parámetro insertado como primer argumento. Por ejemplo:
 +
<syntaxhighlight lang="python">
 +
url_for('index')
 +
</syntaxhighlight>
 +
Buscará la vista o función que corresponda a '''index''' en el sistema base, si la declaración de la ruta de dicha función ha sido:
 +
<syntaxhighlight lang="python">
 +
@app.route('/index', methods=['GET'])
 +
def index():
 +
    ...
 +
</syntaxhighlight>
 +
Entonces en el código del ''frontend'', en el atributo '''href''' de una etiqueta '''a''' de ''HTML'' se verá algo parecido a lo siguiente:
 +
<syntaxhighlight lang="html">
 +
<a href="/index">Index</a>
 +
</syntaxhighlight>
 +
Cuando se desea hacer la llamada vía '''url_for''' a un método o función específica de una aplicación '''Blueprint''' del sistema, se debe agregar el nombre referencia del '''Blueprint'''.
  
= request =
+
Por ejemplo, si el '''Blueprint''' se llama: '''accounts''' y la función '''users'''; entonces la llamada con '''url_for''' sería parecida a la siguiente:
Para usar esta función o método de ''Flask'' se debe importar de la siguiente manera:
+
<syntaxhighlight lang="python">
 +
url_for('accounts.users')
 +
</syntaxhighlight>
 +
La declaración de la función '''users''' dentro del '''Blueprint''' '''accounts''' sería parecida a la siguiente:
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
# -*- coding: utf-8 -*-
 
# -*- coding: utf-8 -*-
 +
from flask import Blueprint
  
from flask import request
+
app_bp = Blueprint(accounts, __name__, template_folder='templates')
  
 +
@app_bp.route('/users', methods=['GET'])
 +
def users():
 +
    ...
 
</syntaxhighlight>
 
</syntaxhighlight>
== Evaluando método ==
+
Asumiendo que se ha registrado el '''Blueprint''' en el sistema.
Con ''request'' se puede evaluar el método obtenido de un formulario después del ''submit'', por ejemplo:
 
<syntaxhighlight lang="python">
 
print(request.method)
 
</syntaxhighlight>
 
Dependiendo del caso mostrando el método obtenido, entre los más usados:
 
    GET
 
    POST
 
    DELETE
 
    PUT
 
  
Así que se puede usar en una condición tal como:
+
[[Flask: creación de un proyecto con blueprint|Aquí un ejemplo de creación de proyecto con Blueprint]].
<syntaxhighlight lang="python">
 
if request.method == 'POST':
 
    print(request.method)
 
</syntaxhighlight>
 
  
 
= redirect =
 
= redirect =
 
= Temas relacionados =
 
= Temas relacionados =
 
* [[Flask: creación de un proyecto]]
 
* [[Flask: creación de un proyecto]]
 +
* [[Flask: creación de un proyecto con blueprint]]
 
* [[Flask: lista de herramientas y extensiones]]
 
* [[Flask: lista de herramientas y extensiones]]
 
[[Categoría:Python]]
 
[[Categoría:Python]]
 +
[[Categoría:Flask]]

Revisión actual del 19:15 13 mar 2023

El artículo a continuación guarda ciertas referencias rápidas para el uso de Flask.

request

Para usar esta función o método de Flask se debe importar de la siguiente manera:

# -*- coding: utf-8 -*-

from flask import request

Evaluando método

Con request se puede evaluar el método obtenido de un formulario después del submit, por ejemplo:

print(request.method)

Dependiendo del caso mostrando el método obtenido, entre los más usados:

   GET
   POST
   DELETE
   PUT

Así que se puede usar en una condición tal como:

if request.method == 'POST':
    print(request.method)

route

Este método decorador permite crear una ruta de una vista del sistema. El patrón es el siguiente:

@app.route('/index', methods=['GET'])
def index():
    return render_template('template/index.html')

Viene integrado por defecto en la clase que corresponde al nombre de la aplicación según se instancia la clase principal de Flask.

El método se puede sustituir según el método request que se desea usar. En el caso anterior solo se ha agregado GET, pero se puede incluir tantos métodos sean necesarios para dicha vista, ejemplo:

@app.route('/usuario-nuevo', methods=['GET', 'POST'])
def usuario_nuevo():
    if request.method == 'POST':
        flash('Ha entrado en el POST')
    return render_template('template/usuario_nuevo.html')

Así si se desea usar la misma función para mostrar y crear formulario usando GET y POST según el request, entonces el sistema valora la petición y la usa según el caso, igualmente se añaden ciertas condiciones según lo que requiera la aplicación en determinado momento.

url_for

Esta función construye una URL según el parámetro insertado como primer argumento. Por ejemplo:

url_for('index')

Buscará la vista o función que corresponda a index en el sistema base, si la declaración de la ruta de dicha función ha sido:

@app.route('/index', methods=['GET'])
def index():
    ...

Entonces en el código del frontend, en el atributo href de una etiqueta a de HTML se verá algo parecido a lo siguiente:

<a href="/index">Index</a>

Cuando se desea hacer la llamada vía url_for a un método o función específica de una aplicación Blueprint del sistema, se debe agregar el nombre referencia del Blueprint.

Por ejemplo, si el Blueprint se llama: accounts y la función users; entonces la llamada con url_for sería parecida a la siguiente:

url_for('accounts.users')

La declaración de la función users dentro del Blueprint accounts sería parecida a la siguiente:

# -*- coding: utf-8 -*-
from flask import Blueprint

app_bp = Blueprint(accounts, __name__, template_folder='templates')

@app_bp.route('/users', methods=['GET'])
def users():
    ...

Asumiendo que se ha registrado el Blueprint en el sistema.

Aquí un ejemplo de creación de proyecto con Blueprint.

redirect

Temas relacionados