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}