序列化器中的数字字段 – Django REST框架

序列化器中的数字字段 – Django REST框架

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

IntegerField

IntegerField基本上是一个整数字段,它根据Python的int实例验证输入。它与IntegerField – Django Models相同。
它有以下参数 –

  • max_value 验证所提供的数字是否不大于这个值。
  • min_value 验证所提供的数字是否不低于这个值。

语法 –

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

FloatField

FloatField基本上是一个浮动字段,根据Python的浮动实例来验证输入。
它有以下参数 –

  • max_value 验证所提供的数字是否不大于这个值。
  • min_value 验证所提供的数字是否不低于这个值。

语法 –

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

DecimalField

DecimalField基本上是一个十进制字段,根据Python的十进制实例验证输入。它与DecimalField – Django Models相同。
它有以下参数 –

  • max_digits 数字中允许的最大位数。它必须是无或大于或等于小数位数的整数。
  • decimal_places 要与数字一起存储的小数位数。
  • max_value 验证所提供的数字是否不大于这个值。
  • min_value 验证所提供的数字是否不低于这个值。
  • localize 设置为 “True “以启用基于当前语言的输入和输出的本地化。

语法 –

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

如何在序列化器中使用数值字段

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

# import serializer from rest_framework
from rest_framework import serializers
 
class Geeks(object):
    def __init__(self, integer, float_number, decimal_number):
        self.integer = integer
        self.float_number = float_number
        self.decimal_number = decimal_number
 
# create a serializer
class GeeksSerializer(serializers.Serializer):
    # initialize fields
    integer = serializers.IntegerField()
    float_number = serializers.FloatField()
    decimal_number = serializers.DecimalField()

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

Python manage.py shell

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

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

# create a object of type Geeks
>>> obj = Geeks(123, 123.10, 123.123)

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

# print serialized data
>>> serializer.data
{'integer': 123, 'float_number': 123.1, 'decimal_number': '123.1230'}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程