gpt4 book ai didi

Django 验证 ImageField 尺寸等

转载 作者:行者123 更新时间:2023-12-04 14:18:01 24 4
gpt4 key购买 nike

我在下面有一个自定义的清理方法:

def clean_image(self):
image = self.cleaned_data['image']
if image:
from django.core.files.images import get_image_dimensions
w, h = get_image_dimensions(image)
if not image.content_type in settings.VALID_IMAGE_FORMATS:
raise forms.ValidationError(u'Only *.gif, *.jpg and *.png images are allowed.')
if w > settings.VALID_IMAGE_WIDTH or h > settings.VALID_IMAGE_HEIGHT:
raise forms.ValidationError(u'That image is too big. The image needs to be ' + str(settings.VALID_IMAGE_WIDTH) + 'px * ' + str(settings.VALID_IMAGE_HEIGHT) + 'px (or less).')
return image

问题场景是这样的:

已上传图片。我现在想使用使用 ImageField 小部件出现的复选框清除它。当提交表格以明确这一点时,clear 没有。

如果我删除我的自定义清理方法, clear 确实有效。因此,我想我的方法做错了。

最佳答案

当 django 实现这个验证时,有 3 个问题:

  • Django 需要获取这些字段的值,总是需要返回一个值
  • 需要使用您使用的模型的名称放置类 Meta。
  • 在这句话中需要把.get这样
    self.cleaned_data.get['image']
  • 代码如下所示:
    class Meta: 
    model = NameModel

    def clean_image(self):
    image = self.cleaned_data.get['image']
    if image:
    from django.core.files.images import get_image_dimensions
    w, h = get_image_dimensions(image)
    if not image.content_type in settings.VALID_IMAGE_FORMATS:
    raise forms.ValidationError(u'Only *.gif, *.jpg and *.png images are allowed.')
    if w > settings.VALID_IMAGE_WIDTH or h > settings.VALID_IMAGE_HEIGHT:
    raise forms.ValidationError(u'That image is too big. The image needs to be ' + str(settings.VALID_IMAGE_WIDTH) + 'px * ' + str(settings.VALID_IMAGE_HEIGHT) + 'px (or less).')
    return image
  • 关于Django 验证 ImageField 尺寸等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7612445/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com