DRF 自定义图片大小验证器

111 阅读1分钟

DRF 自定义图片大小验证器

简介

很简单,就是继承BaseValidator,重写 __call__ 方法

1.定义

validators.py 文件中定义,方便使用


from django.core.validators import BaseValidator
from django.core.exceptions import ValidationError

class CustomImageSizeValidator(BaseValidator):
    """
    图片大小验证器
    必传参数 limit_value 图片大小(int)
    可选参数 message 报错信息(str)
    """
    message = ""

    def __call__(self, value): # value就是你所验证的图片
         # 设置允许的最大图片大小(以 MB 为单位)
        max_size = self.limit_value * 1024 * 1024  # 传进来的limit_value是限制的图片大小
        message = f"单张图片大小不能超过{ self.limit_value}MB" if not self.message else self.message 
        raise ValidationError(message ) 


使用

from utils.restframework.valitors import CustomImageSizeValidator
class AppointmentInfoSerializer(serializers.ModelSerializer):
    """序列化器"""
    imgs = serializers.ListField(child=serializers.ImageField(validators=[CustomImageSizeValidator(limit_value=8)]),write_only=True,required=False)  # 如果是filefield需要加上 allow_empty_file=False,

    class Meta:
        model = AppointmentInfo
        fields = "__all__"
        extra_kwargs = {
            "create_time": {"read_only": True},
            "update_time": {"read_only": True}