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),也可以从该类继承。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像