Forms en Django
Los formularios en Django son una parte fundamental de cualquier aplicación web. Permiten a los usuarios enviar datos al servidor y procesarlos de manera eficiente. En este tutorial, aprenderemos cómo crear formularios en Django y cómo procesarlos en las vistas.
Creación de un formulario
Para crear un formulario en Django, primero debemos definir una clase que herede de forms.Form o forms.ModelForm. A continuación, definimos los campos del formulario como atributos de la clase. Por ejemplo, el siguiente formulario permite a los usuarios enviar un mensaje de contacto:
Recordemos los modelos creados en la sección anterior:
from django.db import models
class Medicamento(models.Model):
nombre = models.CharField(max_length=100)
precio = models.DecimalField(max_digits=10, decimal_places=2)
existencias = models.IntegerField()
def __str__(self):
return self.nombre
class Venta(models.Model):
medicamento = models.ForeignKey(Medicamento, on_delete=models.CASCADE)
cantidad = models.IntegerField()
fecha = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.medicamento} - {self.cantidad}'Para crear un formulario de contacto, podemos hacer lo siguiente:
1from django import forms
2from .models import Medicamento, Venta
3class ContactForm(forms.Form):
4 nombre = forms.CharField(label='Nombre', max_length=100)
5 email = forms.EmailField(label='Email', max_length=100)
6 mensaje = forms.CharField(label='Mensaje', widget=forms.Textarea)
7class MedicamentoForm(forms.ModelForm):
8 class Meta:
9 model = Medicamento
10 fields = ['nombre', 'precio', 'existencias']
11class VentaForm(forms.ModelForm):
12 class Meta:
13 model = Venta
14 fields = ['medicamento', 'cantidad']- 1
- Importamos el módulo forms de Django.
- 2
- Importamos los modelos Medicamento y Venta.
- 3
- Definimos una clase ContactForm que hereda de forms.Form.
- 4
- Definimos un campo de texto para el nombre del usuario.
- 5
- Definimos un campo de correo electrónico para el email del usuario.
- 6
- Definimos un campo de texto multilínea para el mensaje del usuario.
- 7
- Definimos una clase MedicamentoForm que hereda de forms.ModelForm.
- 8
- Definimos la clase Meta para especificar el modelo y los campos del formulario.
- 9
- Especificamos el modelo Medicamento como base del formulario.
- 10
- Especificamos los campos del formulario: nombre, precio y existencias.
- 11
- Definimos una clase VentaForm que hereda de forms.ModelForm.
- 12
- Definimos la clase Meta para especificar el modelo y los campos del formulario.
- 13
- Especificamos el modelo Venta como base del formulario.
- 14
- Especificamos los campos del formulario: medicamento y cantidad.
Procesamiento de formularios en las vistas
Actividades:
- Crear un formulario para la creación de un nuevo medicamento.
- Crear un formulario para la venta de un medicamento.
Posible solución
- Crear un formulario para la creación de un nuevo medicamento.
from django import forms
from .models import Medicamento
class MedicamentoForm(forms.ModelForm):
class Meta:
model = Medicamento
fields = ['nombre', 'precio', 'existencias']- Crear un formulario para la venta de un medicamento.
from django import forms
from .models import Venta
class VentaForm(forms.ModelForm):
class Meta:
model = Venta
fields = ['medicamento', 'cantidad']Conclusiones
En este tutorial, hemos aprendido cómo crear formularios en Django y cómo procesarlos en las vistas. Los formularios son una parte esencial de cualquier aplicación web y nos permiten interactuar con los usuarios de manera efectiva. En el próximo tutorial, veremos cómo validar los datos de un formulario y mostrar mensajes de error en caso de que haya algún problema.