Creación y Gestión de Formularios con Django
Clase 19 de 32 • Curso de Django
Resumen
La funcionalidad de formularios en Django permite a los desarrolladores crear, validar y gestionar formularios de manera eficiente y organizada. A continuación, exploraremos cómo crear formularios en Django paso a paso.
¿Cómo se crean formularios en Django?
Para crear un nuevo formulario en Django, primero se debe crear una clase que herede de forms.Form
. Esta clase contendrá todos los campos que queremos incluir en el formulario.
- Crear el archivo forms.py:
from django import forms class ProductForm(forms.Form): name = forms.CharField(max_length=200, label='Nombre') description = forms.CharField(max_length=300, label='Descripción') price = forms.DecimalField(max_digits=10, decimal_places=2, label='Precio') available = forms.BooleanField(initial=True, label='Disponible', required=False) photo = forms.ImageField(label='Foto', required=False)
¿Cómo se manejan los datos del formulario en Django?
Una vez que el formulario está creado, necesitamos definir cómo manejar los datos cuando el usuario envía el formulario. Esto incluye validar los datos y guardarlos en la base de datos.
- Método save para guardar datos:
def save(self): from .models import Product data = self.cleaned_data Product.objects.create( name=data['name'], description=data['description'], price=data['price'], available=data['available'], photo=data['photo'] )
¿Cómo se crea la vista para el formulario?
La vista conecta el formulario con el template y maneja el request del usuario. Usaremos una vista genérica de Django para simplificar este proceso.
- Crear la vista:
from django.views.generic.edit import FormView from django.urls import reverse_lazy from .forms import ProductForm class ProductFormView(FormView): template_name = 'products/add_product.html' form_class = ProductForm success_url = reverse_lazy('product_list') def form_valid(self, form): form.save() return super().form_valid(form)
¿Cómo se configuran las URLs para la vista?
Es necesario configurar las URLs para que la vista esté accesible desde el navegador.
- Configurar urls.py:
from django.urls import path from .views import ProductFormView urlpatterns = [ path('add/', ProductFormView.as_view(), name='add_product') ]
¿Cómo se crea el template para el formulario?
El template define la estructura HTML del formulario y cómo se renderiza en la página web.
- Crear el template add_product.html:
<h1>Agregar Producto</h1> <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">Agregar</button> </form>
¿Qué es el CSRF token y por qué es importante?
El CSRF token es una medida de seguridad que protege contra ataques de tipo Cross-Site Request Forgery. Django lo incluye automáticamente en los formularios para asegurar que las solicitudes provengan de fuentes confiables.
¿Cómo se maneja la redirección después de enviar el formulario?
La redirección después del envío del formulario se maneja configurando el parámetro success_url
en la vista, utilizando reverse_lazy
para obtener la URL de destino.
¿Cómo se valida y guarda el producto?
Cuando el formulario es válido, el método form_valid
se encarga de llamar al método save
del formulario para guardar el producto en la base de datos.