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 if not in 多条件判断代码
Sep 21 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
Python并发:多线程与多进程的详解
Jan 24 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
简单了解python变量的作用域
Jul 30 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
解决python3中os.popen()出错的问题
Nov 19 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
Python实现简单得递归下降Parser
May 02 Python
Python加密与解密模块hashlib与hmac
Jun 05 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
几个学习PHP的网址
2006/11/25 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php实现小程序支付完整版
2018/10/09 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
RequireJs的使用详解
2017/02/19 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
在django中自定义字段Field详解
2019/12/03 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
上海中网科技笔试题
2012/02/19 面试题
给校长的建议书
2014/03/12 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript