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的dict,set,list,tuple应用详解
Jul 24 Python
Python生成验证码实例
Aug 21 Python
python读写ini配置文件方法实例分析
Jun 30 Python
解读! Python在人工智能中的作用
Nov 14 Python
详解python中sort排序使用
Mar 23 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
Apache部署Django项目图文详解
Jul 30 Python
python 类之间的参数传递方式
Dec 20 Python
Python生成器常见问题及解决方案
Mar 21 Python
Python基于pandas爬取网页表格数据
May 11 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
用Python爬取某乎手机APP数据
Jun 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
用文本作数据处理
2006/10/09 PHP
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
文件上传的实现
2006/10/09 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
生物制药专业求职信
2014/03/11 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
终止劳动合同通知书
2015/04/16 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
股权投资协议书
2016/03/23 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
Win11更新失败并提示0xc1900101
2022/04/19 数码科技
利用Python实现模拟登录知乎
2022/05/25 Python
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android