Django应用程序模型的有用函数和类
django_model_helpers的Python项目详细描述
模型帮助程序。upload\u to
传递 model_helpers.upload_to 作为任何文件字段或图像字段的 upload_to 参数。默认情况下,这将生成文件名的slugified版本。默认情况下,每个型号都有自己的以型号名称命名的存储文件夹。
upload_to 函数还阻止上载具有某些有害扩展名(如"php"或"py")的文件。
示例用法:
import model_helpers class Profile(models.model): name = CharField(max_length=100) picture = ImageField(upload_to=model_helpers.upload_to)
上载的此型号的图像将存储在: 媒体/profile/<;当前年份>;/<;已删除的原始文件名>;
设置
上载到 功能的设置应放在 设置中的 上载到 选项中。py 文件这些是默认设置
settings.UPLOAD_TO_OPTIONS = { "black_listed_extensions": ["php", "html", "htm", "js", "vbs", "py", "pyc", "asp", "aspx", "pl"], "max_filename_length": 40, "file_name_template": "{model_name}/%Y/{filename}.{extension}" }
- 黑名单扩展名 防止保存任何具有这些扩展名的文件。
- max_filename_length trim filename如果超过特定长度,则在用户上载长文件名时减少数据库错误
- 文件名模板 控制文件的保存位置。
指定"文件名"模板
文件名模板 将字符串传递给strftime()函数;在上面的示例中, '%y' 是四位数的年份。其他可接受的变量有:
- 模型名 :正在为其上载文件的模型名。
- 文件名 :由 上载到 (修剪并删除)处理后的文件名(不带扩展名)
- 扩展名 :文件的扩展名
- 实例 :传递给 upload嫒to 函数的模型实例
例如,将上载的文件保存到这样的目录中
model name/current year/current month/instance's name(dot)file's extension
确实如此
UPLOAD_TO_OPTIONS = {"file_name_template": "{model_name}/%Y/%m/{instance.name}.{extension}" }
自定义每个型号的"上载到"
如果您想为不同型号提供不同的upload_to选项,请改用upload to类。例如,要使imagefield允许所有文件扩展名,可以这样做:
my_image = models.ImageField(upload_to=models_helper.UploadTo(black_listed_extensions=[])
upload to 类接受上述所有设置。如果您希望有非常自定义的文件命名模式(如您希望文件名基于其md5sum),也可以从该类继承。