use*_*875 4 django file-type django-models
我看到所有这些帖子都在谈论“如何限制 Django 的图像字段仅接受某些文件类型”,但我还没有找到 Django 图像字段默认支持/不支持的所有文件类型的列表。
是否有 Django 的图像字段默认支持/不支持的文件类型列表?或者 Django 的 imagefield 是否允许提交任何文件类型?
(django 会允许用户在图像字段中上传 .pdf、.psd、.doc 等文件还是会引发错误?)
我的回答年份:2020
我自己也深陷同样的问题,并且遇到了一些我认为我会分享的知识。
在django.core.validators
生活中的功能命名get_available_image_extensions()
。试试这个。
from django.core import validators as v
v.get_available_image_extensions()
Run Code Online (Sandbox Code Playgroud)
返回:
['blp', 'bmp', 'dib', 'bufr', 'cur', 'pcx', 'dcx', 'dds', 'ps', 'eps', 'fit',
'fits', 'fli', 'flc', 'ftc', 'ftu', 'gbr', 'gif', 'grib', 'h5', 'hdf', 'png',
'apng', 'jp2', 'j2k', 'jpc', 'jpf', 'jpx', 'j2c', 'icns', 'ico', 'im', 'iim',
'tif', 'tiff', 'jfif', 'jpe', 'jpg', 'jpeg', 'mpg', 'mpeg', 'mpo', 'msp',
'palm', 'pcd', 'pdf', 'pxr', 'pbm', 'pgm', 'ppm', 'pnm', 'psd', 'bw', 'rgb',
'rgba', 'sgi', 'ras', 'tga', 'icb', 'vda', 'vst', 'webp', 'wmf', 'emf', 'xbm',
'xpm']
Run Code Online (Sandbox Code Playgroud)
函数本身尝试使用PIL
. 这是它的所有荣耀:
def get_available_image_extensions():
try:
from PIL import Image
except ImportError:
return []
else:
Image.init()
return [ext.lower()[1:] for ext in Image.EXTENSION]
Run Code Online (Sandbox Code Playgroud)
相关函数validate_image_file_extension(value)用于get_available_image_extensions()
确定allowed_extensions
关键字参数。
这里的功能是:
def validate_image_file_extension(value):
return FileExtensionValidator(allowed_extensions=get_available_image_extensions())(value)
Run Code Online (Sandbox Code Playgroud)
希望这能回答以下问题:
是否有 Django 的图像字段默认支持/不支持的文件类型列表?
DjangoImageField
需要第三方包 Pillow(或 PIL,但不推荐使用支持)。它依赖于这些包来验证文件确实是图像。这不依赖于文件扩展名,而是依赖于文件本身的内容。
如果您想知道是否支持某种类型的文件,您应该找出您使用的 Pillow/PIL 版本,并查看相应的文档。
归档时间: |
|
查看次数: |
2784 次 |
最近记录: |