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 相关文章推荐
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
python实现zabbix发送短信脚本
Sep 17 Python
利用python将图片版PDF转文字版PDF
May 03 Python
详解python运行三种方式
May 13 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
python实现在函数图像上添加文字和标注的方法
Jul 08 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
Python下载的11种姿势(小结)
Nov 18 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
如何使用PHP往windows中添加用户
2006/12/06 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
php pdo操作数据库示例
2017/03/10 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
质检员的岗位职责
2013/11/15 职场文书
仓库班组长岗位职责
2013/12/12 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
人民的好儿女观后感
2015/06/18 职场文书
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS