定制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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
分析python请求数据
Aug 19 Python
python实现停车管理系统
Nov 30 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Python中的集合介绍
Jan 28 Python
python中class的定义及使用教程
Sep 18 Python
Python正则表达式学习小例子
Mar 03 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python爬虫容易学吗
Jun 02 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 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
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
浅析JS运动
2015/12/28 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
Python with的用法
2014/08/22 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
Python实现微信机器人的方法
2019/09/06 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
动物学专业毕业生求职信
2013/10/11 职场文书
18岁生日感言
2014/01/12 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
公司寄语大全
2014/04/10 职场文书
12岁生日演讲稿
2014/05/14 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
2016猴年春节问候语
2015/11/11 职场文书
python自动化八大定位元素讲解
2021/07/09 Python
Java界面编程实现界面跳转
2022/06/16 Java/Android