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在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
详解python中list的使用
Mar 15 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python3 中sorted() 函数的用法
Mar 24 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 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
source.php查看源文件
2006/12/09 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
jquery tab插件精简版分享
2011/09/10 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python类的继承实例详解
2017/03/30 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
python爬虫---requests库的用法详解
2020/09/28 Python
selenium自动化测试入门实战
2020/12/21 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
关于VPN
2012/06/10 面试题
模具专业推荐信
2013/10/30 职场文书
怎样填写就业意向
2014/04/02 职场文书
收款委托书
2014/10/14 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python