序列化器中的ListField – Django REST框架

序列化器中的ListField – Django REST框架

Django REST框架中,序列化的概念是将数据库数据转换为可被javascript使用的数据类型。每个序列化器都有一些将要被处理的字段(条目)。例如,如果你有一个名为Employee的类,其字段为Employee_id, Employee_name, is_admin等。那么,你就需要AutoField、CharField和BooleanField来通过Django存储和操作数据。同样的,序列化器也是以同样的原理工作的,它的字段是用来创建一个序列化器。
本文围绕Django REST框架中序列化器的ListField展开。

ListField

ListField基本上是一个列表字段,它根据一个对象的列表验证输入。
它有以下参数 –

  • child – 一个字段实例,应该用于验证列表中的对象。如果没有提供这个参数,那么列表中的对象将不会被验证。
  • allow_empty – 指定是否允许空列表。
  • min_length – 验证列表中的元素数量不少于这个数字。
  • max_length – 验证列表中的元素不超过这个数量。

语法 –

field_name = serializers.ListField(*args, **kwargs)

示例 –
例如,为了验证一个整数列表,我们可以使用类似以下的方法。

scores = serializers.ListField(
   child=serializers.IntegerField(min_value=0, max_value=100)
)

如何在序列化程序中使用ListField

为了解释ListField的用法,让我们使用 “如何使用Django Rest框架创建基本API “中的相同项目设置。
现在你的项目中有一个叫做序列化器的文件,让我们创建一个以ListField为字段的序列化器。

# import serializer from rest_framework
from rest_framework import serializers
 
class Geeks(object):
    def __init__(self, integers):
        self.integers = integers
 
# create a serializer
class GeeksSerializer(serializers.Serializer):
    # initialize fields
    integers = serializers.ListField(
    child = serializers.IntegerField(min_value = 0, max_value = 100)
    )

现在让我们创建一些对象,并尝试将它们序列化,检查它们是否真的能工作,运行,-

Python manage.py shell

现在,在shell中运行以下python命令

# import everything from serializers
>>> from apis.serializers import *

# create a object of type Geeks
>>> obj = Geeks([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# serialize the object
>>> serializer = GeeksSerializer(obj)

# print serialized data
>>> serializer.data
{'integers': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程