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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
Python fileinput模块使用介绍
Nov 30 Python
Python基类函数的重载与调用实例分析
Jan 12 Python
Python入门教程之运算符与控制流
Aug 17 Python
python编写Logistic逻辑回归
Dec 30 Python
numpy.linspace函数具体使用详解
May 27 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
Python生成词云的实现代码
Jan 14 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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&java(二)
2006/10/09 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
python数据结构之链表详解
2017/09/12 Python
python编程线性回归代码示例
2017/12/07 Python
python+opencv识别图片中的圆形
2020/03/25 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
Python Django基础二之URL路由系统
2019/07/18 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
python同时替换多个字符串方法示例
2019/09/17 Python
Python shutil模块用法实例分析
2019/10/02 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
作为网站管理者应当如何防范XSS
2014/08/16 面试题
艺术教育实施方案
2014/05/03 职场文书
运动会宣传口号
2014/06/09 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
三年级学生评语大全
2014/12/26 职场文书
歌舞青春观后感
2015/06/10 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python