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实现进程间通信简单实例
Jul 23 Python
python基于socket实现网络广播的方法
Apr 29 Python
python实现数组插入新元素的方法
May 22 Python
Python中字符串的格式化方法小结
May 03 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
Python selenium模块实现定位过程解析
Jul 09 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
phpfans留言版用到的install.php
2007/01/04 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
突发奇想的一个jquery插件
2010/11/19 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
python批量实现Word文件转换为PDF文件
2018/03/15 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
如何现实servlet的单线程模式
2014/08/05 面试题
道德模范先进事迹
2014/02/14 职场文书
开学典礼演讲稿
2014/05/23 职场文书
博士生求职信
2014/07/06 职场文书
采购员岗位职责
2015/02/03 职场文书
学校捐款活动总结
2015/05/09 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
php7中停止php-fpm服务的方法详解
2021/05/09 PHP