摘要:重写字段的保存,以重命名为例添加配置中末尾添加配置如下,指定指向的操作文件中的类文件上传重写添加应用下添加包,注意有文件,下创建文件,文件内容为初始化重写方法文件扩展名文件目录定义文件名,源文件名,避开系统定义的随机字符串追加,所
settings.py添加配置重写FileField字段的保存,以重命名为例
settings.py中末尾添加配置如下,指定指向的操作文件中的类:
# 文件上传重写 DEFAULT_FILE_STORAGE = "app.customfilefield.storage.FileStorage"添加FileStorage
app应用下添加python包customfilefield,注意有init.py文件,customfilefield下创建py文件storage.py,文件内容为:
storage.py
# -*-coding:utf-8 -*- from django.core.files.storage import FileSystemStorage from django.http import HttpResponse from django.conf import settings import os, time, random from app import utils class FileStorage(FileSystemStorage): def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL): #初始化 super(FileStorage, self).__init__(location, base_url) #重写 _save方法 def _save(self, name, content): #文件扩展名 ext = os.path.splitext(name)[1] #文件目录 d = os.path.dirname(name) # 定义文件名,源文件名,避开系统定义的随机字符串追加,所以避开不用name字段 end = utils.find_last(str(content), ".") filename = "" if end != -1: filename = str(content)[:end] # 定义文件名,年月日时分秒随机数 fn = time.strftime("%Y%m%d%H%M%S") fn = fn + "_%d" % random.randint(0,100) #重写合成文件名 name = os.path.join(d, filename + fn + ext) #调用父类方法 return super(FileStorage, self)._save(name, content)
utils.py
# 获取字符串中指定字符最后一次出现的位置 def find_last(string,str): last_position=-1 while True: position=string.find(str,last_position+1) if position==-1: return last_position last_position=position
如此,最后上传的文件名为原文件名加上年月日时分秒加上0-100的随机数保存,效果如下:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41008.html
摘要:今天介绍一下开发中,定义模型时用到的相关字段类型和字段选项。的实例是作为类型保存到数据库中的,默认字符串的最大长度是,但是可以使用参数指定最大长度。浮点类型,用中的实例表示整数类型。关于的字段类型和参数就先讲到这里。 今天介绍一下django开发中,定义模型时用到的相关字段类型和字段选项。 先说说常用的字段类型:1) AutoField: 自增字段类型,当自定义自增类型的id时,可以使...
摘要:对象关系映射,简称模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。在业务逻辑层和数据库层之间充当了桥梁的作用。每个字段被指定为一个类属性,每个属性映射到一个数据库列。字符类型,必须提供参数,表示字符长度。 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是...
摘要:总结整个过程的难点在于获取文件对象,从数据中取值然后在按取出,这样我们就可以从后台上传文件,然后进行批量导入数据库,其他数据格式只需要改和中的数据字段就可以 第一篇(从django后台解析excel数据批量导入数据库) 文章会在github中持续更新 作者: knthony github 联系我 1.django 如何从后台上传excel中批量解析数据 要从django后台导入...
摘要:本人年开发经验,现就职于电信,因工作需要学习,记录自己的学习记录。 本人java10年开发经验,现就职于电信,因工作需要学习python,记录自己的学习记录。后面也...
摘要:为了将代码规范,约定俗成将视图放置在项目或应用程序目录中命名为文件中。必须接受字段表示字符串长度不能超过该值,默认的标签最常用的。例,自动添加发布时间。以字符串的形式存在,默认最大长度,可以通过参数设置。用于保存通用唯一识别码的字段。 MVC 大部分开发语言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重...
阅读 3266·2021-11-22 14:44
阅读 1112·2021-11-16 11:53
阅读 1264·2021-11-12 10:36
阅读 698·2021-10-14 09:43
阅读 3684·2019-08-30 15:55
阅读 3398·2019-08-30 14:14
阅读 1733·2019-08-26 18:37
阅读 3409·2019-08-26 12:12