序列化器中的文件上传字段 – Django REST框架

序列化器中的文件上传字段 – Django REST框架

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

FileField

FileField基本上是一个文件表示法。它执行Django的标准FileField验证。这个字段与FileField – Django Models相同。
它有以下参数 –

  • max_length – 指定文件名的最大长度。
  • allow_empty_file – 指定是否允许空文件。
  • use_url – 如果设置为True,那么URL字符串值将被用于输出表示。如果设置为False,那么文件名字符串值将被用于输出表示。默认为UPLOADED_FILES_USE_URL设置键的值,除非另行设置,否则为True。

语法 –

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

ImageField

ImageField是一个图像表示法。它验证上传的文件内容是否符合已知的图像格式。这与ImageField – Django forms相同。
它有以下参数 –

  • max_length – 指定文件名的最大长度。
  • allow_empty_file – 指定是否允许空文件。
  • use_url – 如果设置为True,那么URL字符串值将被用于输出表示。如果设置为False,那么文件名字符串值将被用于输出表示。默认为UPLOADED_FILES_USE_URL设置键的值,除非另行设置,否则为True。

语法 –

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

如何在序列化器中使用文件上传字段字段

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

# import serializer from rest_framework
from rest_framework import serializers
 
class Geeks(object):
    def __init__(self, files, image):
        self.files = files
        self.image = image
 
# create a serializer
class GeeksSerializer(serializers.Serializer):
    # initialize fields
    files = serializers.FileField()
    image = serializers.ImageField()

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

Python manage.py shell

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

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

# create objects of type Text File and Image
>>> from django.core.files import File
>>> text_file = File(open("test.txt"), 'rb')
>>> image_file = File(open("test.jpeg"), 'rb')

# create a object of type Geeks
>>> obj = Geeks(text_file, image_file)

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

# print serialized data
>>> serializer.data
{'files': None, 'image': None}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程