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