0
我想允许上传某些特定的文件类型。我为一个特定的文件编写了下面的代码,它工作。验证django中的多个文件
def validate_file_extension(value):
if not value.name.endswith('.zip'):
raise ValidationError(u'Error message')
,但我想允许一个以上的文件,所以我在settings_dev设置这些文件,并写下了下面的代码,但不工作。
def validate_file_extension(value):
for f in settings_dev.TASK_UPLOAD_FILE_TYPES:
if not value.name.endswith(f):
raise ValidationError(u'Error message')
Settings_dev
TASK_UPLOAD_FILE_TYPES=['.pdf','.zip','.docx']
型号:
up_stuff=models.FileField(upload_to="sellings",validators=[validate_file_extension])
我怎么能去呢?
谢谢你摇滚!但是你认为像这样访问文件是有效的吗?我尝试过使用python魔法,但在windows上遇到困难时,它一直告诉我“找不到神奇的文件”任何想法? – picomon
@picpic,什么是** python magic **? – falsetru
@picomon,或者你可以将'TASK_UPLOAD_FILE_TYPES'定义为['set'](http://docs.python.org/2/library/stdtypes#set)。然后在'validate_file_extension'中使用['os.path.splitext'](http://docs.python.org/2/library/os.path.html#os.path.splitext)来分割扩展名; 'TASK_UPLOAD_FILE_TYPES'中的扩展名会给出相同的结果。如果存在巨大的文件类型,这种方式可能会略微高效。 – falsetru