重写Django ImageField验证

2024-10-02 12:36:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个表单,允许用户上传任何图像文件+SWF文件。Django的ImageField不支持SWF,所以我需要重写它。在

我要做的是检查文件是否是SWF,如果是真的,则返回它。如果不是SWF,请调用原始方法,该方法将负责文件验证。在

然而,我不确定如何实现这一点。下面是一个例子,说明我正在努力实现的目标,但它并不奏效:

from hexagonit import swfheader    


class SwfImageField(forms.ImageField):

    def to_python(self, data):
        try:
            swfheader.parse(data)
            return data
        except:
            return super(SwfImageField, self).to_python(data)

is的实际作用是目前只允许SWF文件。在


Tags: 文件todjango方法用户self表单data
1条回答
网友
1楼 · 发布于 2024-10-02 12:36:18

另一种可能也是最简单的解决方案是将标准^{}与自定义验证器一起使用:

def my_validate(value):
    ext = os.path.splitext(value.name)[1]  # [0] returns path filename
    valid = ['.jpg', '.swf']
    if ext not in valid:
        raise ValidationError("Unsupported file extension.")

class MyForm(forms.Form):
    file = forms.FileField(validators=[my_validate])

相关问题 更多 >

    热门问题