繁体   English   中英

验证Django中的多个文件

[英]Validate Multiple files in 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])

我该怎么办?

如果TASK_UPLOAD_FILE_TYPES有多种(不同)文件类型,则for循环将始终引发异常。 因为任何一种文件类型都不匹配。

您不需要使用for因为str.endswith接受一个元组作为参数。

>>> 'data.docx'.endswith(('.pdf','.zip','.docx'))
True
>>> 'data.py'.endswith(('.pdf','.zip','.docx'))
False

def validate_file_extension(value):
    if not value.name.endswith(tuple(settings_dev.TASK_UPLOAD_FILE_TYPES)):
       raise ValidationError(u'Error message')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM