django之对FileField字段的upload_to的设定方法


Posted in Python onJuly 28, 2019

用django开发,经常要处理用户上传的文件, 比如user模型里面如果又个人头像的字段 ImageField等等,而django在FielField字段(包括ImageField)的支持和扩展是做的很好的,首先一个问题,是上传的文件,django是放到哪里去了,(note: 文件流是不会放到数据库里面的,该字段在数据库中只存储路径),django提供了upload_to属性

以下介绍upload_to的具体使用方法

1.最直接的方式,硬编码路径

# MyProject.settings.py 里面设置MEDIA_ROOT and MEDIA_URL

MEDIA_ROOT = os.path.join(BASE_DIR, 'upload/')
MEDIA_URL = '/upload/' #这个是在浏览器上访问该上传文件的url的前缀

# models.py

class User(models.Model):
 avatar = ImageField(upload_to = 'avatar/')
 #实际的路径就是 MEDIA_ROOT/avatar/filename
 #所以可以用uoload_to来指定文件存放的前缀路径

2.使用strftime()

如果觉得以上方式太僵硬,万一文件重名了,那就会有各种问题了,为了避免重名,django在upload_to上内置了strftime()函数

# models.py
class User(models.Model):
 avatar = ImageField(upload_to = 'avatar/%Y/%m/%d/')

这样子的方式,%Y、%m、%d分别表示年、月、日

3.更加灵活的方式

当然,如果觉得只是避免文件路径重名,还是不能满足你,其实,django还允许你重写一个upload_to函数,重定义上传文件的路径前缀

# models.py

#让上传的文件路径动态地与user的名字有关
def upload_to(instance, fielname):
 return '/'.join([MEDIA_ROOT, instance.user_name, filename])

class User(models.Model):
 avatar = ImageField(upload_to = upload_to)
 user_name = CharField(max_length = 250)

以上这篇django之对FileField字段的upload_to的设定方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 匹配任意字符(包括换行符)的正则表达式写法
Oct 29 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
python调用百度REST API实现语音识别
Aug 30 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
flask框架自定义url转换器操作详解
Jan 25 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 Python
Django ImageFiled上传照片并显示的方法
Jul 28 #Python
Python线上环境使用日志的及配置文件
Jul 28 #Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 #Python
处理python中多线程与多进程中的数据共享问题
Jul 28 #Python
在django中图片上传的格式校验及大小方法
Jul 28 #Python
python之生产者消费者模型实现详解
Jul 27 #Python
python单线程下实现多个socket并发过程详解
Jul 27 #Python
You might like
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
PHP array 的加法操作代码
2010/07/24 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
Web开发之JavaScript
2012/03/29 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
python如何使用unittest测试接口
2018/04/04 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
行政助理的岗位职责
2014/02/18 职场文书
体育教学随笔感言
2014/02/24 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
公务员个人考察材料
2014/12/23 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
Python中第三方库Faker的使用详解
2022/04/02 Python