我正在尝试创建一个表单,允许用户上传任何图像文件+ SWF 文件。 Django 的 ImageField 不支持 SWF,因此我需要覆盖它。
我想做的是检查文件是否为SWF,如果为True,则返回它。如果不是 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)
实际上,目前仅允许 SWF 文件。
最佳答案
另一种可能最简单的解决方案是使用标准 FileField
使用自定义验证器:
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])
关于python - 覆盖 Django ImageField 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642404/