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中的对象拷贝示例 python引用传递
Jan 23 Python
python中的五种异常处理机制介绍
Sep 02 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
python解析基于xml格式的日志文件
Feb 25 Python
用python制作游戏外挂
Jan 04 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
python实现搜索文本文件内容脚本
Jun 22 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
详解Python3定时器任务代码
Sep 23 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
解决pycharm中的run和debug失效无法点击运行
Jun 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
社区(php&&mysql)六
2006/10/09 PHP
mysql 字段类型说明
2007/04/27 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php判断当前操作系统类型
2015/10/28 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php自动加载代码实例详解
2021/02/26 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
python实现动态创建类的方法分析
2019/06/25 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
篮球兴趣小组活动总结
2014/07/07 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
创业计划书之废品回收
2019/09/26 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS