定制FileField中的上传文件名称实例


Posted in Python onAugust 23, 2017

FileField中的upload_to属性可以设定上传文件的存储目录和名称,它可以是个字符串,也可以是个callable,比如一个方法。

当upload_to的值设为一个方法时,就可以对上传文件的名称进行修改了。方法需要两个参数,instance与filename,instance为此FileField所属的Model实例,filename为上传文件的名称。

举例:

def user_directory_path(instance, filename): 
# file will be uploaded to MEDIA_ROOT/user_<id>/<filename> 
return 'user_{0}/{1}'.format(instance.user.id, filename) 

class MyModel(models.Model): 
upload = models.FileField(upload_to=user_directory_path)

当一个类定义了__call__方法时,也可以像func一样被调用,所以,upload_to的值也可以是一个定义了__call__方法的类。

比如,要根据上传时间为文件名加时间戳:

import hashlib 
import os 
import time 
 
from django.utils.deconstruct import deconstructible 
 
 
@deconstructible
class TimeStampFileName(object): 
  def __init__(self, path): 
    self.path = os.path.join(path, "%s%s") 
 
  def __call__(self, instance, filename): 
    extension = os.path.splitext(filename)[1] 
    data = "%s_%d"%(filename,int(time.time())) 
    file_hash = hashlib.sha1(data).hexdigest() 
    return self.path % (file_hash, extension)

Model中的FileField可以如下定义:

class MyModel(models.Model): 
  upload = models.FileField(upload_to=TimeStampFileName('media/'), )

以上这篇定制FileField中的上传文件名称实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python笔记(叁)继续学习
Oct 24 Python
Python 错误和异常代码详解
Jan 29 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
Python对excel文档的操作方法详解
Dec 10 Python
详解Python3注释知识点
Feb 19 Python
python批量创建指定名称的文件夹
Mar 21 Python
python requests指定出口ip的例子
Jul 25 Python
在Django中实现添加user到group并查看
Nov 18 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
如何基于python实现不邻接植花
May 01 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
基于python元祖与字典与集合的粗浅认识
Aug 23 #Python
Python 多线程Threading初学教程
Aug 22 #Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 #Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 #Python
Python实现的矩阵类实例
Aug 22 #Python
Python实现图片转字符画的示例
Aug 22 #Python
利用aardio给python编写图形界面
Aug 21 #Python
You might like
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python实现简易端口扫描器代码实例
2017/03/15 Python
Python实现的字典值比较功能示例
2018/01/08 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
Python3.9新特性详解
2020/10/10 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
财务担保书范文
2014/04/02 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
服务承诺口号
2014/05/22 职场文书
解除劳动合同证明书
2014/09/26 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
幸福来敲门观后感
2015/06/04 职场文书
开国大典观后感
2015/06/04 职场文书
高中语文教学反思范文
2016/02/16 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js