El serializador viene con algunos campos (entradas) que procesan datos dentro y fuera del serializador en Django REST Framework. El motivo mismo de la serialización es convertir los datos de la base de datos a un tipo de datos que pueda ser utilizado por javascript. Por ejemplo, si tiene una clase con el nombre Employee y sus campos como Employee_id, Employee_name, is_admin, etc. Entonces, necesitará AutoField, CharField y BooleanField para almacenar y manipular datos a través de Django. Uno necesita varios campos para impartir validaciones predeterminadas a los datos, es decir, uno usaría EmailField para almacenar correo electrónico porque valida los datos en una dirección de correo electrónico.
Este artículo gira en torno a varios campos que se pueden usar en un serializador en Django REST Framework y cómo se pueden usar. Los campos de serializador en Django REST Framework se pueden dividir en las siguientes categorías:
- Campos booleanos
- Campos de string
- Campos Numéricos
- Campos de fecha y hora
- Campos de selección de opciones
- Campos de carga de archivos
- Campos del serializador
- Argumentos centrales en los campos del serializador
Campos booleanos
Hay dos campos principales para los campos booleanos: BooleanField y NullBooleanField.
campo booleano
Un campo booleano utilizado para envolver valores verdaderos o falsos . Funciona igual que BooleanField – Django Models . De forma predeterminada, las instancias de serializers.BooleanField se crean de forma predeterminada como False.
Sintaxis –
field_name = serializers.BooleanField()
NullBooleanField
Un campo booleano que acepta valores True , False y Null . Funciona igual que NullBooleanField – Django Models . De forma predeterminada, las instancias de serializers.NullBooleanField se crean de forma predeterminada como none.
Sintaxis –
field_name = serializers.NullBooleanField()
Para ver más, visite – Campos booleanos en serializadores – Django REST Framework
Campos de string
Hay tres campos principales: CharField, EmailField y RegexField.
CharField
CharField se utiliza para almacenar la representación de texto. Opcionalmente valida el texto para que sea más corto que max_length y más largo que min_length. Funciona igual que CharField – Django Models .
Tiene los siguientes argumentos:
- max_length : valida que la entrada no contenga más de este número de caracteres.
- min_length : valida que la entrada no contenga menos de este número de caracteres.
- allow_blank : si se establece en True, la string vacía debe considerarse un valor válido. Si se establece en False, la string vacía se considera no válida y generará un error de validación. El valor predeterminado es falso.
- trim_whitespace : si se establece en True, se recortan los espacios en blanco iniciales y finales. El valor predeterminado es Verdadero.
Sintaxis –
field_name = serializers.CharField(*args, **kwargs)
Campo de correo electrónico
EmailField también es una representación de texto y valida el texto para que sea una dirección de correo electrónico válida. Es lo mismo que EmailField – Django Models . Toma todos los argumentos de CharField para las mismas funcionalidades.
Sintaxis –
field_name = serializers.EmailField(*args, **kwargs)
RegexField
Como lo define el nombre, RegexField hace coincidir la string con una expresión regular en particular; de lo contrario, genera un error. Es lo mismo que RegexField – Django Forms . Toma todos los argumentos de CharField para las mismas funcionalidades.
Sintaxis –
field_name = serializers.RegexField(*args, **kwargs)
Para verificar más, visite – Campos de string en serializadores – Django REST Framework
Campos de URL
Hay dos campos principales: URLField y SlugField.
campo URL
URLField es básicamente un RegexField que valida la entrada contra un patrón de coincidencia de URL. Espera direcciones URL completas del formulario http:///. Funciona igual que URLField – Django Models
Tiene los siguientes argumentos:
- allow_blank : si se establece en True, la string vacía debe considerarse un valor válido. Si se establece en False, la string vacía se considera no válida y generará un error de validación. El valor predeterminado es falso.
Sintaxis –
field_name = serializers.URLField(*args, **kwargs)
campo de babosas
SlugField es un RegexField que valida la entrada contra el patrón [a-zA-Z0-9_-]+. Es lo mismo que SlugField – Django Models .
Sintaxis –
field_name = serializers.SlugField(*args, **kwargs)
Para verificar más, visite – Campos de URL en serializadores – Django REST Framework
Campos Numéricos
Hay tres campos principales: IntegerField, FloatField y DecimalField.
CampoEntero
IntegerField es básicamente un campo entero que valida la entrada contra la instancia int de Python. Es lo mismo que IntegerField – Django Models
Tiene los siguientes argumentos:
- max_value Valida que el número proporcionado no sea mayor que este valor.
- min_value Valida que el número proporcionado no sea inferior a este valor.
Sintaxis –
field_name = serializers.IntegerField(*args, **kwargs)
campo flotante
FloatField es básicamente un campo flotante que valida la entrada contra la instancia flotante de Python. Es lo mismo que FloatField – Django Models
Tiene los siguientes argumentos:
- max_value Valida que el número proporcionado no sea mayor que este valor.
- min_value Valida que el número proporcionado no sea inferior a este valor.
Sintaxis –
field_name = serializers.FloatField(*args, **kwargs)
campo decimal
DecimalField es básicamente un campo decimal que valida la entrada contra la instancia decimal de Python. Es lo mismo que DecimalField – Django Models
Tiene los siguientes argumentos:
- max_digits El número máximo de dígitos permitidos en el número. Debe ser Ninguno o un número entero mayor o igual que decimal_places.
- decimal_places El número de lugares decimales para almacenar con el número.
- max_value Valida que el número proporcionado no sea mayor que este valor.
- min_value Valida que el número proporcionado no sea inferior a este valor.
- localizar Establézcalo en Verdadero para habilitar la localización de entrada y salida en función de la configuración regional actual.
Sintaxis –
field_name = serializers.DecimalField(*args, **kwargs)
Para verificar más, visite – Campos numéricos en serializadores – Django REST Framework
Campos de fecha y hora
Hay cuatro campos principales: DateTimeField, DateField, TimeField y DurationField.
Campo de fecha y hora
DateTimeField es un campo serializador utilizado para la representación de fecha y hora. Es lo mismo que – DateTimeField – Modelos Django
Tiene los siguientes argumentos:
- formato : una string que representa el formato de salida. Si no se especifica, el valor predeterminado es el mismo que la clave de configuración DATETIME_FORMAT, que será ‘iso-8601’ a menos que se establezca. El establecimiento de una string de formato indica que los valores de retorno de to_representation deben forzarse a una salida de string. Las strings de formato se describen a continuación. Establecer este valor en Ninguno indica que los objetos de fecha y hora de Python deben ser devueltos por to_representation. En este caso, el renderizador determinará la codificación de fecha y hora.
- input_formats : una lista de strings que representan los formatos de entrada que se pueden usar para analizar la fecha. Si no se especifica, se utilizará la configuración DATETIME_INPUT_FORMATS, cuyo valor predeterminado es [‘iso-8601’].
- default_timezone : un pytz.timezone que representa la zona horaria. Si no se especifica y la configuración USE_TZ está habilitada, el valor predeterminado es la zona horaria actual. Si USE_TZ está deshabilitado, los objetos de fecha y hora serán ingenuos.
Sintaxis –
field_name = serializers.DateTimeField(*args, **kwargs)
campo de fecha
DateField es un campo serializador utilizado para la representación de fechas. A menudo, uno necesita almacenar la fecha, como en un modelo de blog, la fecha de cada publicación debe almacenarse. Este campo es igual que DateField – Django Models
Tiene los siguientes argumentos –
- formato : una string que representa el formato de salida. Si no se especifica, el valor predeterminado es el mismo que la clave de configuración DATE_FORMAT, que será ‘iso-8601’ a menos que se establezca. El establecimiento de una string de formato indica que los valores de retorno de to_representation deben forzarse a una salida de string. Las strings de formato se describen a continuación. Establecer este valor en Ninguno indica que to_representation debe devolver los objetos de fecha de Python. En este caso, el renderizador determinará la codificación de la fecha.
- input_formats : una lista de strings que representan los formatos de entrada que se pueden usar para analizar la fecha. Si no se especifica, se utilizará la configuración DATE_INPUT_FORMATS, cuyo valor predeterminado es [‘iso-8601’].
Sintaxis –
field_name = serializers.DateField(*args, **kwargs)
Campo de tiempo
Timefield es un campo serializador utilizado para la representación del tiempo. A menudo, es necesario almacenar la fecha, como en un modelo de blog, se debe almacenar la hora de cada publicación.
Tiene los siguientes argumentos:
- formato : una string que representa el formato de salida. Si no se especifica, el valor predeterminado es el mismo que la clave de configuración TIME_FORMAT, que será ‘iso-8601’ a menos que se establezca. El establecimiento de una string de formato indica que los valores de retorno de to_representation deben forzarse a una salida de string. Las strings de formato se describen a continuación. Establecer este valor en Ninguno indica que los objetos de tiempo de Python deben ser devueltos por to_representation. En este caso, la codificación de tiempo será determinada por el renderizador.
- input_formats : una lista de strings que representan los formatos de entrada que se pueden usar para analizar la fecha. Si no se especifica, se utilizará la configuración TIME_INPUT_FORMATS, que por defecto es [‘iso-8601’].
Sintaxis –
field_name = serializers.TimeField(*args, **kwargs)
DuraciónCampo
DurationField es un campo serializador utilizado para la representación de la duración. Este campo es el mismo que DurationField – Django Models
Tiene los siguientes argumentos –
- max_value Valida que la duración proporcionada no sea mayor que este valor.
- min_value Valida que la duración proporcionada no sea inferior a este valor.
Sintaxis –
field_name = serializers.DurationField(*args, **kwargs)
Para verificar más, visite – Campos de fecha y hora en serializadores – Django REST Framework
Campos de selección de opciones
Hay dos campos principales: Choice y MultipleChioceField.
campo de elección
ChoiceField es básicamente un CharField que valida la entrada contra un valor de un conjunto limitado de opciones. Este campo es el mismo que ChoiceField – Django Forms .
Tiene los siguientes argumentos:
- opciones : una lista de valores válidos o una lista de tuplas (clave, nombre_de_visualización).
- allow_blank : si se establece en True, la string vacía debe considerarse un valor válido. Si se establece en False, la string vacía se considera no válida y generará un error de validación. El valor predeterminado es falso.
- html_cutoff : si se establece, esta será la cantidad máxima de opciones que se mostrarán en un menú desplegable de selección de HTML. Se puede utilizar para garantizar que los ChoiceFields generados automáticamente con selecciones posibles muy grandes no impidan que se represente una plantilla. El valor predeterminado es Ninguno.
- html_cutoff_text : si se establece, se mostrará un indicador de texto si se ha cortado el número máximo de elementos en un menú desplegable de selección de HTML. El valor predeterminado es «Más de {count} artículos…»
Sintaxis –
field_name = serializers.ChoiceField(*args, **kwargs)
campo de opción múltiple
ChoiceField es básicamente un CharField que valida la entrada contra un conjunto de cero, uno o muchos valores, elegidos de un conjunto limitado de opciones. Este campo es el mismo que MultipleChoiceField – Django Forms .
Sintaxis –
field_name = serializers.MultipleChoiceField(*args, **kwargs)
Para verificar más, visite – Campos de selección de elección en serializadores – Django REST Framework
Campos de carga de archivos
Hay dos campos principales: FileField e ImageField.
campo de archivo
FileField es básicamente una representación de archivo. Realiza la validación estándar de FileField de Django. Este campo es el mismo que FileField – Django Models .
Tiene los siguientes argumentos:
- max_length : designa la longitud máxima para el nombre del archivo.
- allow_empty_file : designa si se permiten archivos vacíos.
- use_url : si se establece en True, los valores de string de URL se utilizarán para la representación de salida. Si se establece en False, se utilizarán valores de string de nombre de archivo para la representación de salida. El valor predeterminado es el valor de la clave de configuración UPLOADED_FILES_USE_URL, que es True a menos que se establezca lo contrario.
Sintaxis –
field_name = serializers.FileField(*args, **kwargs)
campo de imagen
ImageField es una representación de imagen. Valida que el contenido del archivo cargado coincida con un formato de imagen conocido. Esto es lo mismo que ImageField – formularios Django
Tiene los siguientes argumentos:
- max_length : designa la longitud máxima para el nombre del archivo.
- allow_empty_file : designa si se permiten archivos vacíos.
- use_url : si se establece en True, los valores de string de URL se utilizarán para la representación de salida. Si se establece en False, se utilizarán valores de string de nombre de archivo para la representación de salida. El valor predeterminado es el valor de la clave de configuración UPLOADED_FILES_USE_URL, que es True a menos que se establezca lo contrario.
Sintaxis –
field_name = serializers.ImageField(*args, **kwargs)
Para ver más, visite – Campos de carga de archivos en serializadores – Django REST Framework
Campos del serializador
.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; }
Nombre del campo | Descripción |
---|---|
campo booleano | Un campo booleano utilizado para envolver valores verdaderos o falsos. |
NullBooleanField | Un campo booleano que acepta valores True, False y Null. |
CharField | CharField se utiliza para almacenar la representación de texto. |
Campo de correo electrónico | EmailField también es una representación de texto y valida el texto para que sea una dirección de correo electrónico válida. |
RegexField | Como lo define el nombre, RegexField hace coincidir la string con una expresión regular en particular; de lo contrario, genera un error. |
campo URL | URLField es básicamente un RegexField que valida la entrada contra un patrón de coincidencia de URL. |
campo de babosas | SlugField es un RegexField que valida la entrada contra el patrón [a-zA-Z0-9_-]+. |
CampoDirecciónIP | IPAddressField es un campo que garantiza que la entrada sea una string IPv4 o IPv6 válida. |
CampoEntero | IntegerField es básicamente un campo entero que valida la entrada contra la instancia int de Python. |
campo flotante | FloatField es básicamente un campo flotante que valida la entrada contra la instancia flotante de Python. |
campo decimal | DecimalField es básicamente un campo decimal que valida la entrada contra la instancia decimal de Python. |
Campo de fecha y hora | DateTimeField es un campo serializador utilizado para la representación de fecha y hora. |
campo de fecha | DateField es un campo serializador utilizado para la representación de fechas. |
Campo de tiempo | Timefield es un campo serializador utilizado para la representación del tiempo. |
DuraciónCampo | DurationField es un campo serializador utilizado para la representación de la duración. |
campo de elección | ChoiceField es básicamente un CharField que valida la entrada contra un valor de un conjunto limitado de opciones. |
campo de opción múltiple | MultipleChoiceField es básicamente un CharField que valida la entrada contra un conjunto de cero, uno o muchos valores, elegidos de un conjunto limitado de opciones. |
campo de archivo | FileField es básicamente una representación de archivo. Realiza la validación estándar de FileField de Django. |
campo de imagen | ImageField es una representación de imagen. Valida que el contenido del archivo cargado coincida con un formato de imagen conocido. |
Campo de lista | ListField es básicamente un campo de lista que valida la entrada contra una lista de objetos. |
campo JSON | JSONField es básicamente una clase de campo que valida que la estructura de datos entrantes consiste en primitivas JSON válidas. |
Campo escondido | HiddenField es una clase de campo que no toma un valor basado en la entrada del usuario, sino que toma su valor de un valor predeterminado o invocable. |
DictField | DictField es básicamente un campo de diccionario que valida la entrada contra un diccionario de objetos. |
Argumentos centrales en los campos del serializador
Los campos del serializador en Django son los mismos que los campos de formulario de Django y los campos de modelo de Django y, por lo tanto, requieren ciertos argumentos para manipular el comportamiento de esos campos.
.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; }
Argumento | Descripción |
---|---|
solo lectura | Establézcalo en True para asegurarse de que el campo se use al serializar una representación, pero no al crear o actualizar una instancia durante la deserialización. |
escribir solamente | Establézcalo en True para asegurarse de que el campo se pueda usar al actualizar o crear una instancia, pero no se incluya al serializar la representación. |
requerido | Establecer esto en False también permite omitir el atributo del objeto o la clave del diccionario de la salida al serializar la instancia. |
defecto | Si se establece, proporciona el valor predeterminado que se utilizará para el campo si no se proporciona ningún valor de entrada. |
permitir nula | Normalmente, se generará un error si se pasa Ninguno a un campo serializador. Establezca este argumento de palabra clave en Verdadero si Ninguno debe considerarse un valor válido. |
fuente | El nombre del atributo que se utilizará para rellenar el campo. |
validadores | Una lista de funciones de validación que deben aplicarse a la entrada de campo entrante y que generan un error de validación o simplemente regresan. |
error de mensajes | Un diccionario de códigos de error a mensajes de error. |
etiqueta | Una string de texto corta que se puede usar como el nombre del campo en campos de formulario HTML u otros elementos descriptivos. |
texto de ayuda | Una string de texto que se puede utilizar como descripción del campo en campos de formulario HTML u otros elementos descriptivos. |
inicial | Un valor que debe usarse para completar previamente el valor de los campos de formulario HTML. |
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA