关于定制FileField中的上传文件名称问题


Posted in Javascript onAugust 22, 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中的上传文件名称,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
Jquery实现的角色左右选择特效
May 21 Javascript
jQuery 获取兄弟元素的几种不错方法
May 23 Javascript
Node调试工具JSHint的安装及配置教程
May 27 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
Jul 22 Javascript
解读ES6中class关键字
Nov 20 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
Apr 19 Javascript
vue实现多组关键词对应高亮显示功能
Jul 25 Javascript
layui 地区三级联动 form select 渲染的实例
Sep 27 Javascript
antd design table更改某行数据的样式操作
Oct 31 Javascript
vue实现登陆页面开发实践
May 30 Vue.js
React复制到剪贴板的示例代码
Aug 22 #Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 #Javascript
vue.js异步上传文件前后端实现代码
Aug 22 #Javascript
node中koa中间件机制详解
Aug 22 #Javascript
理解javascript async的用法
Aug 22 #Javascript
React Native之TextInput组件解析示例
Aug 22 #Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 #Javascript
You might like
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
js如何打印object对象
2015/10/16 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
在python中的socket模块使用代理实例
2014/05/29 Python
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
博士生专家推荐信
2015/03/25 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
《日月潭》教学反思
2016/02/20 职场文书
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
python中的3种定义类方法
2021/11/27 Python
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android