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信息的一个小实例
May 02 Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
python线程定时器Timer实现原理解析
Nov 30 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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获取post中的json数据的实现方法
2011/06/08 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
Script的加载方法小结
2011/01/12 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
python 字符串split的用法分享
2013/03/23 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python对文件操作知识汇总
2016/05/15 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
商业门面租房协议书
2014/11/25 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
学术会议通知范文
2015/04/15 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
导游词之崇武古城
2019/10/07 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python