Cuando uno crea una clase de formulario , la parte más importante es definir los campos del formulario. Cada campo tiene una lógica de validación personalizada, junto con algunos otros ganchos. Este artículo gira en torno a varios campos que se pueden usar en un formulario junto con varias funciones y técnicas relacionadas con Django Forms. Los formularios se usan básicamente para tomar información del usuario de alguna manera y usar esa información para operaciones lógicas en las bases de datos. Por ejemplo, Registrar un usuario ingresando su nombre, correo electrónico, contraseña, etc.
Django mapea los campos definidos en los formularios de Django en campos de entrada HTML. Django maneja tres partes distintas del trabajo relacionado con los formularios:
- preparar y reestructurar datos para que estén listos para renderizar
- crear formularios HTML para los datos
- recibir y procesar formularios enviados y datos del cliente
Tenga en cuenta que todos los tipos de trabajo realizados por los formularios de Django se pueden realizar con elementos HTML avanzados, pero Django lo hace más fácil y eficiente, especialmente la parte de validación. Una vez que obtenga los formularios de Django, simplemente se olvidará de los formularios HTML.
Sintaxis: Django Fields funciona como Django Model Fields y tiene la sintaxis:
field_name = forms.FieldType(**options)
Ejemplo:
Python3
from django import forms # creating a form class GeeksForm(forms.Form): title = forms.CharField() description = forms.CharField()
Uso de formularios de Django
Para usar Django Forms, uno necesita tener un proyecto y una aplicación trabajando en él. Después de iniciar una aplicación, puede crear un formulario en app/forms.py. Antes de comenzar a usar un formulario, veamos cómo iniciar un proyecto e implementar Django Forms.
Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django.
Crear un formulario Django
Crear un formulario en Django es completamente similar a crear un modelo, uno necesita especificar qué campos existirían en el formulario y de qué tipo. Por ejemplo, para ingresar un formulario de registro, es posible que necesite Nombre (CharField), Número de lista (IntegerField), etc.
Sintaxis:
from django import forms class FormName(forms.Form): # each field would be mapped as an input field in HTML field_name = forms.Field(**options)
Para crear un formulario, en geeks/forms.py Ingrese el código,
Python3
# import the standard Django Forms # from built-in library from django import forms # creating a form class InputForm(forms.Form): first_name = forms.CharField(max_length = 200) last_name = forms.CharField(max_length = 200) roll_number = forms.IntegerField( help_text = "Enter 6 digit roll number" ) password = forms.CharField(widget = forms.PasswordInput())
Para obtener más información sobre cómo crear un formulario con formularios de Django, visite ¿ Cómo crear un formulario con formularios de Django? .
Renderizar formularios de Django
Los campos de formulario de Django tienen varios métodos integrados para facilitar el trabajo del desarrollador, pero a veces es necesario implementar cosas manualmente para personalizar la interfaz de usuario (UI). Un formulario viene con 3 métodos incorporados que se pueden usar para representar los campos de formulario de Django.
- {{ form.as_table }} los representará como celdas de tabla envueltas en etiquetas <tr>
- {{ form.as_p }} los renderizará envueltos en etiquetas <p>
- {{ form.as_ul }} los renderizará envueltos en etiquetas <li>
Para convertir este formulario en una vista, muévase a views.py y cree una home_view como se muestra a continuación.
Python3
from django.shortcuts import render from .forms import InputForm # Create your views here. def home_view(request): context ={} context['form']= InputForm() return render(request, "home.html", context)
En vista, uno solo necesita crear una instancia de la clase de formulario creada anteriormente en forms.py. Ahora vamos a editar plantillas > home.html
html
<form action = "" method = "post"> {% csrf_token %} {{form }} <input type="submit" value=Submit"> </form>
Ahora, visite http://localhost:8000/
.
Para verificar cómo usar los datos generados por Django Forms, visite Render Django Form Fields
Crear formulario Django a partir de modelos
Django ModelForm es una clase que se utiliza para convertir directamente un modelo en un formulario Django. Si está creando una aplicación basada en una base de datos, es probable que tenga formularios que se correspondan estrechamente con los modelos de Django. Ahora cuando tengamos nuestro proyecto listo, crea un modelo en geeks/models.py,
Python3
# import the standard Django Model # from built-in library from django.db import models # declare a new model with a name "GeeksModel" class GeeksModel(models.Model): # fields of the model title = models.CharField(max_length = 200) description = models.TextField() last_modified = models.DateTimeField(auto_now_add = True) img = models.ImageField(upload_to = "images/") # renames the instances of the model # with their title name def __str__(self): return self.title
Para crear un formulario directamente para este modelo, sumérgete en geeks/forms.py e ingresa el siguiente código:
Python3
# import form class from django from django import forms # import GeeksModel from models.py from .models import GeeksModel # create a ModelForm class GeeksForm(forms.ModelForm): # specify the name of model to use class Meta: model = GeeksModel fields = "__all__"
Ahora visite http://127.0.0.1:8000/ ,
Más sobre formularios de Django:
- Renderizar formularios HTML (GET & POST) en Django
- {{ form.as_p }} – Renderizar formularios de Django como párrafo
- {{ form.as_table }} – Renderizar formularios de Django como tabla
- {{ form.as_ul }} – Renderizar formularios de Django como lista
- Widgets personalizados de campo de formulario de Django
- Python | Validación de formularios usando django
- Django ModelForm – Crear formulario a partir de modelos
- Renderizar campos de formulario de Django manualmente
- Conjuntos de formularios de Django
- Django ModelFormSets
Lista de campos y tipos de datos básicos del formulario
La parte más importante de un formulario y la única parte requerida es la lista de campos que define. Los campos se especifican mediante atributos de clase. Aquí hay una lista de todos los tipos de campos de formulario utilizados en Django
Nombre | Clase | Entrada HTML |
---|---|---|
campo booleano | clase BooleanField(**kwargs) | Entrada de casilla de verificación |
CharField | clase CharField(**kwargs) | Entrada de texto |
campo de elección | clase ChoiceField(**kwargs) | Seleccione |
TypedChoiceField | clase TypedChoiceField(**kwargs) | Seleccione |
campo de fecha | clase DateField(**kwargs) | Entrada de fecha |
Campo de fecha y hora | clase DateTimeField(**kwargs) | Entrada de fecha y hora |
campo decimal | clase CampoDecimal(**kwargs) | NumberInput cuando Field.localize es False, de lo contrario TextInput |
Campo de duración | campo de duración de la clase (** kwargs) | Entrada de texto |
Campo de correo electrónico | clase EmailField(**kwargs | Entrada de correo electrónico |
campo de archivo | clase FileField(**kwargs) | Entrada de archivo borrable |
CampoRutaArchivo | clase FilePathField(**kwargs) | Seleccione |
campo flotante | clase FloatField(**kwargs) | NumberInput cuando Field.localize es False, de lo contrario TextInput |
campo de imagen | clase ImageField(**kwargs) | Entrada de archivo borrable |
CampoEntero | clase IntegerField(**kwargs) | NumberInput cuando Field.localize es False, de lo contrario TextInput |
Campo de dirección IP genérico | clase GenericIPAddressField(**kwargs) | Entrada de texto |
campo de elección múltiple | clase MultipleChoiceField(**kwargs) | Seleccionar Múltiple |
TypedMultipleChoiceField | clase TypedMultipleChoiceField(**kwargs) | Seleccionar Múltiple |
NullBooleanField | clase NullBooleanField(**kwargs) | NullBooleanSelect |
RegexField | clase RegexField(**kwargs) | Entrada de texto |
campo de babosas | clase SlugField(**kwargs) | Entrada de texto |
Campo de tiempo | clase TimeField(**kwargs) | Entrada de tiempo |
campo URL | clase URLField(**kwargs) | URL de entrada |
campo UUIID | clase UUIDField(**kwargs) | Entrada de texto |
Argumentos del campo central
Los argumentos de Core Field son los argumentos dados a cada campo para aplicar alguna restricción o impartir una característica particular a un campo en particular. Por ejemplo, agregar un argumento requerido = Falso a CharField permitirá que el usuario lo deje en blanco. Cada constructor de clase Field toma al menos estos argumentos. Algunas clases de campo toman argumentos adicionales específicos de campo, pero siempre se debe aceptar lo siguiente:
.math-table { borde-colapso: colapsar; ancho: 100%; } .math-table td { borde: 1px sólido #5fb962; alineación de texto: izquierda! importante; relleno: 8px; } .math-table th { borde: 1px sólido #5fb962; relleno: 8px; } .math-table tr>th{ color de fondo: #c6ebd9; alineación vertical: medio; } .math-table tr:nth-child(odd) { background-color: #ffffff; }
Opciones de campo | Descripción |
---|---|
requerido | De forma predeterminada, cada clase de campo asume que el valor es obligatorio, por lo que para que no sea obligatorio, debe configurar requerido = Falso |
etiqueta | El argumento de la etiqueta le permite especificar la etiqueta «apto para humanos» para este campo. Esto se usa cuando el campo se muestra en un formulario. |
sufijo_etiqueta | El argumento label_suffix le permite anular el label_suffix del formulario por campo. |
artilugio | El argumento del widget le permite especificar una clase de widget para usar al representar este campo. Consulte Widgets para obtener más información. |
texto de ayuda | El argumento help_text le permite especificar texto descriptivo para este campo. Si proporciona texto de ayuda, se mostrará junto al campo cuando uno de los métodos de formulario de conveniencia represente el campo. |
error de mensajes | El argumento error_messages le permite anular los mensajes predeterminados que generará el campo. Pase un diccionario con claves que coincidan con los mensajes de error que desea anular. |
validadores | El argumento de los validadores le permite proporcionar una lista de funciones de validación para este campo. |
localizar | El argumento localizar permite la localización de la entrada de datos del formulario, así como la salida representada. |
discapacitado _ | El argumento booleano disabled, cuando se establece en True, desactiva un campo de formulario utilizando el atributo HTML disabled para que los usuarios no puedan editarlo. |
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA