Renderizar formularios HTML (GET & POST) en Django

Django a menudo se llama «Marco de baterías incluidas» porque tiene una configuración predeterminada para todo y tiene características que pueden ayudar a cualquier persona a desarrollar un sitio web rápidamente. Hablando de formularios, en HTML, un formulario es una colección de elementos dentro de <form>…</form> que permite a un visitante hacer cosas como ingresar texto, seleccionar opciones, manipular objetos o controles, etc., y luego enviar eso información de vuelta al servidor. Básicamente, es una colección de datos para procesarlos para cualquier propósito, incluido guardarlos en la base de datos o recuperar datos de la base de datos. Django admite todos los tipos de formularios HTML y la representación de datos de ellos en una vista para su procesamiento mediante varias operaciones lógicas.

Para saber más acerca de los formularios HTML, visite HTML | etiqueta de formulario .

Django también proporciona una función integrada de Django Forms al igual que Django Models . Uno puede crear formularios en Django y usarlos para obtener datos del usuario de manera conveniente.
Para comenzar con los formularios, uno debe estar familiarizado con las requests GET y POST en los formularios.

  • GET: GET, por el contrario, agrupa los datos enviados en una string y los usa para componer una URL. La URL contiene la dirección donde se deben enviar los datos, así como las claves y valores de los datos. Puede ver esto en acción si realiza una búsqueda en la documentación de Django, que generará una URL con el formato https://docs.djangoproject.com/search/?q=forms&release=1.
  • POST: cualquier solicitud que pueda usarse para cambiar el estado del sistema, por ejemplo, una solicitud que realice cambios en la base de datos, debe usar POST.

Renderizar formularios HTML en Django Explicación

Ilustración de Django Forms usando un ejemplo. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks.

Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django.

Vamos a crear un formulario HTML simple para mostrar cómo puede ingresar los datos de un usuario y usarlos en su vista. Ingrese el siguiente código en geeks > templates > home.html

HTML

<form action = "" method = "get">
    <label for="your_name">Your name: </label>
    <input id="your_name" type="text" name="your_name">
    <input type="submit" value="OK">
</form>

Ahora, para representarlo en nuestra vista, debemos modificar urls.py para la aplicación geeks.
Ingrese el siguiente código en geeksforgeeks > urls.py

Python3

from django.urls import path
 
# importing views from views..py
from .views import geeks_view
 
urlpatterns = [
    path('', home_view ),
]

Ahora, pasemos a nuestra home_view y comencemos a verificar cómo vamos a obtener los datos. Los datos completos de un formulario HTML en Django se transfieren como un objeto JSON llamado solicitud. Primero creemos una vista y luego probaremos todos los métodos para obtener datos del formulario.

Python3

from django.shortcuts import render
 
# Create your views here.
def home_view(request):
 
    # logic of view will be implemented here
    return render(request, "home.html")

Como tenemos todo configurado, ejecutemos Python manage.py run server y verifiquemos si el formulario está en la página de inicio.

django-forms-python

De forma predeterminada, todos los formularios escritos en HTML realizan una solicitud GET en el back-end de una aplicación, una solicitud GET normalmente funciona mediante consultas en la URL. Vamos a demostrarlo usando el formulario de arriba, complete el formulario con su nombre y veamos qué sucede.

python-django-forms

La URL anterior se adjunta con un atributo de nombre de la etiqueta de entrada y el nombre ingresado en el formulario. Así es como funciona la solicitud GET, independientemente del número de entradas que se agregarían a la URL para enviar los datos al back-end de una aplicación. Veamos cómo obtener finalmente estos datos en nuestra vista para que la lógica pueda aplicarse en función de la entrada. 
En vistas.py

Python3

from django.shortcuts import render
 
# Create your views here.
def home_view(request):
    print(request.GET)
    return render(request, "home.html")

Ahora, cuando llenamos el formulario, podemos ver el resultado en la terminal como se muestra a continuación:

python-django-forms-get-request

request.GET devuelve un diccionario de consulta al que se puede acceder como cualquier otro diccionario de Python y finalmente usar sus datos para aplicar alguna lógica. 
De manera similar, si el método de transmisión es POST, puede usar request.POST como diccionario de consulta para representar los datos del formulario en vistas.

En casa.html

HTML

<form action = "" method = "POST">
    {% csrf_token %}
    <label for="your_name">Your name: </label>
    <input id="your_name" type="text" name="your_name">
    <input type="submit" value="OK">
</form>

Tenga en cuenta que cada vez que creamos una solicitud de formulario, Django requiere que agregue {% csrf_token %} en el formulario por motivos de seguridad. 
Ahora, en views.py, veamos qué tiene request.POST.

Python3

from django.shortcuts import render
 
# Create your views here.
def home_view(request):
    print(request.POST)
    return render(request, "home.html")

Ahora, cuando enviamos el formulario, muestra los datos de la siguiente manera.

python-django-forms-render-post-request

De esta manera, uno puede usar estos datos para consultar la base de datos o para procesarlos usando alguna operación lógica y pasarlos usando el diccionario de contexto a la plantilla.

Publicación traducida automáticamente

Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *