Use la solicitud posterior para enviar datos a un servidor Django

Salman Mehmood 15 febrero 2024
Use la solicitud posterior para enviar datos a un servidor Django

En esta explicación sobre Django, presentamos brevemente las solicitudes post y get y cómo implementar el token CSRF con post en Django.

Use la solicitud post para enviar datos a un servidor Django

Usamos el protocolo HTTP cada vez que enviamos una solicitud u obtenemos una respuesta. El HTTP tiene múltiples métodos como get, post, put, delete, etc., pero aquí nos centraremos en los dos métodos, get y post.

Cuando visitas un enlace para obtener la imagen, esa es una solicitud de obtención porque esperas algo de un servidor. Si desea enviar algo al servidor, tal vez esté completando un formulario y enviando sus datos; ese es el método post.

Cuando buscamos los datos usando la barra de búsqueda, el método get funcionará en segundo plano, y podemos ver los datos en la barra de direcciones.

Cuando enviemos datos que puedan ser contraseñas u otra información secreta, no utilizaremos el método get. Usaremos el método post en el backend.

La segunda razón para usar el método post es cuando enviamos múltiples datos de todo el formulario con muchos campos, y no queremos mostrar todo en la barra de direcciones. Técnicamente, siempre debe usar el método post para enviar datos.

El primer paso es ir a su formulario y establecer el atributo del método como publicación. Por defecto, el formulario utiliza el método get.

<form action='add' method='post'>
    Enter 1st number<input type="text" name='num1'><br>
    Enter 2nd number<input type="text" name='num2'><br>

</form>

Veamos si el método post funciona correctamente. Esperamos que intente usar este código con un proyecto Django, así que ejecute el servidor y vaya a su navegador.

Producción:

Solicitud posterior de Django - Salida

Cuando enviamos un formulario, detectamos un error y, al menos en la barra de direcciones, no tenemos ningún dato, pero ¿qué hay de malo en eso? Este error dice que la verificación CSRF falló.

El error surge porque hay varias técnicas de piratería disponibles en Internet. El CSRF es una etiqueta que nos ayudará a enviar nuestros datos de forma segura.

Pero, no hablaremos mucho sobre este ataque. Puede buscar sobre CSRF.

Django tiene una función integrada para evitar este error. Si vamos al archivo settings.py, encontraremos la lista MIDDLEWARE, y en esta lista, podemos ver que ya existe una técnica CSRF determinada para usar al enviar datos.

Solicitud de publicación de Django - MIDDLEWARE

Usando el código Jinja, necesitamos usar ese token CSRF en nuestro formulario.

<form action='add' method='post'>
    {% csrf_token %}
    Enter 1st number<input type="text" name='num1'><br>
    Enter 2nd number<input type="text" name='num2'><br>


</form>

Necesitamos abrir el archivo views.py y escribir este código de demostración.

def add(request):
    val1 = int(request.POST["num1"])
    val2 = int(request.POST["num2"])
    res = val1 + val2

    return render(request, "request.html", {"result": res})

Entonces, en este código, solo sumamos dos números enteros y enviamos el resultado a request.html sin obtener un error.

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