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进阶教程之动态类型详解
Aug 30 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
Sanic框架安装与简单入门示例
Jul 16 Python
Numpy中的mask的使用
Jul 21 Python
python实现大转盘抽奖效果
Jan 22 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
python IDLE添加行号显示教程
Apr 25 Python
pytorch查看模型weight与grad方式
Jun 24 Python
Python基础之数据类型知识汇总
May 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
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
Vue.js实现备忘录功能
2019/06/26 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python视频按帧截取图片工具
2019/07/23 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
地理教师岗位职责
2014/03/16 职场文书
护士个人总结范文
2015/02/13 职场文书
2015年暑假生活总结
2015/07/13 职场文书
致运动员赞词
2015/07/22 职场文书
员工考勤管理制度
2015/08/06 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
Golang 正则匹配效率详解
2021/04/25 Golang
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python