Programación Back-End

Unidad 2: Framework Back-End

Contextos de vista Django

Redactado por Criz
Publicado el 5 de junio de 2024 a las 15:31
Última actualización el 11 de junio de 2024 a las 00:59

Acciones rapidas
Editar
Siguiente
Previo

La variable request

Para continuar con los formularios, es importante revisar la variable request de la vista.
En Django, la variable request de nuestra vista contiene información sobre la petición.

1
2
3
#           👇 me refiero a esta variable
def crear(request):
    ...

En ella podemos encontrar:

El método usado

A través de la variable request podemos diferenciar el tipo de método que se está usando:

1
2
3
4
5
6
7
def crear(request):
    if request.method == "POST":
        # se ha hecho un POST.
    if request.method == "GET":
        # se ha hecho un GET
    if request.method == "PUT":
        # es un PUT

Nótese que por defecto el método es GET. Ya que los navegadores web lo usan para recibir información.

Los parámetros GET

En el mundo HTTP, los parámetros GET son aquellos que acompañan la URL.
Un ejemplo es https://www.google.com/search?client=firefox&q=django.
En este caso, los parámetros son:

En Django, los parámetros GET se pueden obtener de la siguiente forma:

1
2
3
4
5
def index(request):
    cliente = request.GET["client"]
    # cliente = "firefox"
    query = request.GET.get("q", "") # get("llave", "valor-por-defecto-si-la-llave-no-existe")
    # query = "django"

Nótese que, los parámetros GET siempre están, aunque el método haya sido POST, si la URL contiene los parámetros, estos pasaran igualmente.

Los parámetros POST

El método POST es conocido por él envió de formularios, es una buena forma de obtener datos del cliente.
El método POST suele ser aplicable cuando un formulario es subido mediante su botón submit.

Para enviar parámetros POST, se suele usar un formulario para indicar los campos:

1
2
3
4
5
6
7
8
9
<form action="" method="post">
    <label for="id_nombre">Nombre:</label>
    <input type="text" name="nombre" id="id_nombre" value="Martillo">
    <br>
    <label for="id_cantidad">Cantidad:</label>
    <input type="number" name="cantidad" id="id_cantidad" value="392">
    <br>
    <button type="submit">Enviar</button>
</form>

Nótese que si no hemos definido action, automáticamente se volverá a llamar la vista que genero la renderización del template.

Al clicar el botón Enviar, el método del formulario realizara un POST la URL que se haya definido en action.
Los inputs serán los parámetros de entrada, y sus llaves serán los valores dentro de name.

Entonces, luego del POST, en la vista podremos acceder a estos parámetros:

1
2
3
4
5
6
7
8
def crear(request):
    if request.method == "POST": # primero verificamos que se haya hecho un POST
        nombre = request.POST["nombre"]
        # nombre = "Martillo"
        cantidad = request.POST.get("cantidad") # el valor por defecto es None
        # cantidad = 392
        precio = request.POST.get("precio", 1500) # la llave 'precio' NO existe
        # precio = 1500 # como no existe, el valor por defecto queda

Ahora sí, vamos a continuar con los formularios!


Siguiente
Previo