use*_*120 4 django django-rest-framework
我有一个通过 Django Rest Framework 发送图像的表单。序列化器如图所示:
class AvatarSerializer(serializers.ModelSerializer):
avatar = Base64ImageField(validators=[image_validation])
class Meta:
model = Profile
fields = ('avatar',)
Run Code Online (Sandbox Code Playgroud)
我还进行了图像验证,检查图像的大小,使其不超过 12MB:
def image_validation(image):
# 12MB
MAX_FILE_SIZE = 12000000
print(image.name)
if image.size > MAX_FILE_SIZE:
print(image.size)
raise ValidationError("File size too big!")
Run Code Online (Sandbox Code Playgroud)
当我尝试上传大于 12mb 的图像时,图像大小会被打印出来,但是,我在 Chrome 的网络选项卡中收到此响应:我读到Failed to load response data这可能是由于图像的大小所致(我试图上传 30mb 的图像)。未ValidationError显示,并且用户收到 500 服务器错误。我怎样才能解决这个问题?
序列化器具有字段级验证功能,可以在返回之前验证属性。
https://www.django-rest-framework.org/api-guide/serializers/#field-level-validation
class AvatarSerializer(serializers.ModelSerializer):
avatar = Base64ImageField()
def validate_avatar(self, image):
# 12MB
MAX_FILE_SIZE = 12000000
print(image.name)
if image.size > MAX_FILE_SIZE:
print(image.size)
raise ValidationError("File size too big!")
class Meta:
model = Profile
fields = ('avatar',)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2712 次 |
| 最近记录: |