擅长:python、mysql、java
<p>版本<code>1.11</code>中的Django为模型字段添加了一个新的<code>FileExtensionValidator</code>,文档在这里:<a href="https://docs.djangoproject.com/en/dev/ref/validators/#fileextensionvalidator" rel="noreferrer">https://docs.djangoproject.com/en/dev/ref/validators/#fileextensionvalidator</a>。</p>
<p>如何验证文件扩展名的示例:</p>
<pre><code>from django.core.validators import FileExtensionValidator
from django.db import models
class MyModel(models.Model):
pdf_file = models.FileField(upload_to='foo/',
validators=[FileExtensionValidator(allowed_extensions=['pdf'])])
</code></pre>
<p>注意,此方法不安全。Django docs的引文:</p>
<blockquote>
<p>Don’t rely on validation of the file extension to determine a file’s
type. Files can be renamed to have any extension no matter what data
they contain.</p>
</blockquote>
<p>还有新的<code>validate_image_file_extension</code>(<a href="https://docs.djangoproject.com/en/dev/ref/validators/#validate-image-file-extension" rel="noreferrer">https://docs.djangoproject.com/en/dev/ref/validators/#validate-image-file-extension</a>)用于验证图像扩展(使用枕头)。</p>